在javascript中使用全局变量

时间:2009-07-22 18:22:34

标签: javascript variables global-variables

我该怎么做?

我的代码是这样的:

var number = null;

function playSong(artist,title,song,id)
{
    alert('old number was: '+[number]+'');


    var number = '10';

    alert(''+[number]+'');
}

第一个警报总是返回'旧号码是:'而不是10.在第二个函数调用时,它是否应该在两个警报上都返回10?

7 个答案:

答案 0 :(得分:15)

在设置number ='10'时使用var,您每次都将number声明为局部变量。试试这个:

var number = null;

function playSong(artist,title,song,id)
{
    alert('old number was: '+[number]+'');


    number = '10';

    alert(''+[number]+'');
}

答案 1 :(得分:11)

删除函数中数字前面的var。您正在通过

创建局部变量
var number = 10;

你需要的只是

number = 10;

答案 2 :(得分:3)

问题是你在函数内部声明了一个名为number的新变量。这个新变量隐藏了全局number变量,因此行number = 10仅分配给这个新的局部变量。

您需要从var删除var number = 10关键字。

答案 3 :(得分:1)

与C类似,您需要在函数/方法之外定义变量以使其成为全局变量。

var number = 0;

function playSong(artist,title,song,id)
{
    alert('old number was: '+[number]+'');
    number = '10';
    alert(''+[number]+'');
}

答案 4 :(得分:1)

在删除var inside函数之后,你也可以在window.number之类的任何函数中访问它。

答案 5 :(得分:1)

让我详细解释一下,在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编译器,变量的所有声明/初始化将移至顶部,这个概念称为“提升”。 链接:https://www.w3schools.com/js/js_hoisting.asp

根据编译器程序将执行

var number; //Declaration will move to top always in Javascript
number=1;
function playSong() { 
    var number;
    alert(number); //output : undefied - This is 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 Global variable
   alert(number); // output : 2   -From local variable
}

答案 6 :(得分:0)

我在2020年遇到了这个问题,在网上搜索了更多内容之后,我发现在JavaScript定义中显然是将变量放在函数之外,甚至创建了一个名为 globals.js 的文件并将所有全局所需的变量放入该文件中,将该文件作为jQuery和您需要的任何其他插件之后的脚本标记中的第一个用户.js文件,全局变量将在其他脚本之前加载,并允许您从 globals.js 在页面上的任何脚本中。

W3C JavaScript Scope

我已经在自己构建的PHP应用程序中测试了该理论,并且已经能够通过通过{{加载的页面中的 globals.js 文件调用变量3}}到 jconfirm 对话框,以进行故障排除向导以设置关闭对话框时的返回值。