我该怎么做呢?
我的代码是这样的:
var number = null;
function playSong(artist, title, song, id)
{
alert('old number was: ' + [number] + '');
var number = '10';
alert('' + [number] + '');
}
第一个警报总是返回“旧号码是:”而不是 10。它不应该在第二个函数调用的两个警报上都返回 10 吗?
我该怎么做呢?
我的代码是这样的:
var number = null;
function playSong(artist, title, song, id)
{
alert('old number was: ' + [number] + '');
var number = '10';
alert('' + [number] + '');
}
第一个警报总是返回“旧号码是:”而不是 10。它不应该在第二个函数调用的两个警报上都返回 10 吗?
通过var
在设置 number = '10' 时使用,您number
每次都将其声明为局部变量。试试这个:
var number = null;
function playSong(artist, title, song, id)
{
alert('old number was: ' + [number] + '');
number = '10';
alert('' + [number] + '');
}
删除函数var
中的前面number
。您正在创建一个局部变量
var number = 10;
您只需
number = 10;
问题是您在number
函数内部声明了一个名为的新变量。这个新变量隐藏了全局number
变量,因此该行number = 10
只分配给这个新的局部变量。
您需要从 中删除var
关键字var number = 10
。
就像在 C 中一样,您需要在函数/方法之外定义变量以使其成为全局变量。
var number = 0;
function playSong(artist,title,song,id)
{
alert('old number was: '+[number]+'');
number = '10';
alert(''+[number]+'');
}
让我详细解释一下。在 JavaScript 中声明全局变量和局部变量
var firstNumber = 5; // Local variable
secondNumber = 10; // Global variable or window object
当你的程序是这样的
var number = 1;
function playSong() {
alert(number);
var number = 2;
alert(number);
}
根据 JavaScript 编译器,所有变量的声明/初始化都将移到顶部。这个概念称为吊装。
根据编译器,程序将执行如下:
var number; // Declaration will move to top always in Javascript
number = 1;
function playSong() {
var number;
alert(number); // Output: undefined - This is a local variable inside the function
number = 2;
alert(number); // Output: 2
}
如果您需要访问函数内部的全局变量,请使用window.number。
var number = 1;
function playSong() {
var number = 2;
alert(window.number); // Output: 1 - From a global variable
alert(number); // Output: 2 - From local variable
}
window.number
在函数内部删除后,您还可以在任何函数中访问它,例如, var
。
我在 2020 年遇到了这个答案,在网上搜索了更多内容后,我发现如果您将变量放在函数之外,甚至创建一个名为globals.js的文件,然后将所有全局所需的变量放入其中,那么显然在 JavaScript 定义中文件,使该文件成为 jQuery 和您需要的任何其他插件之后脚本标签中的第一个用户 .js 文件,全局变量将在您的其他脚本之前加载,并允许您在页面上的任何脚本中从globals.js调用变量。
我已经在我正在构建的PHP应用程序中测试了这个理论,并且我已经能够从通过Ajax加载到jconfirm对话框的页面中的globals.js文件中调用变量,以便故障排除向导设置返回值当对话框关闭时。