繁体   English   中英

JS全局变量和局部变量

[英]JS Global and Local Variables

我一直在努力使一些代码正常工作,我认为这是由于我的可变范围。 我没有在这里发布所有代码,而是做了一个简化的版本,问“为什么不起作用”:

$(document).ready(function() {

console.log("INITIALIZE");
var aGlobalVariable = 25;

function testFunction(){

    var aLocalVariable = 5;

    var sumVariables = aGlobalVariable + aLocalVariable;

    console.log(sumVariables);
}

});

我希望testFunction能够看到GlobalVariable,将25加上5,然后输出30。它不会这样做。 如果尝试对其进行console.log,我什至看不到全局变量:

在此处输入图片说明

在文档开始处声明的变量不是全局变量吗????

谢谢!

在testFunction中确实知道aGlobalVariable 调用该函数并检出控制台:

$(document).ready(function() {

    console.log("INITIALIZE");
    var aGlobalVariable = 25;

    function testFunction() {

        var aLocalVariable = 5;  
        var sumVariables = aGlobalVariable + aLocalVariable;

        console.log(sumVariables);
    }

    testFunction();
});

这是显示此内容的jsfiddle: https ://jsfiddle.net/0c8rpLmj/

当您尝试通过控制台查看aGlobalVariable时,它是未定义的,因为它实际上不是全局的(您已经在ready函数作用域下定义了它)。

那不是全局变量。 ready函数之外定义它。

var aGlobalVariable = 25;

$(document).ready(function() {

    console.log("INITIALIZE");


    function testFunction(){

        var aLocalVariable = 5;

        var sumVariables = aGlobalVariable + aLocalVariable;

        console.log(sumVariables);
   }

});

现在您应该可以看到它的工作了。

函数表达式也创建变量作用域。

$(document).ready(function() {
    var aGlobalVariable = 25;

您的变量位于函数内部,并用var声明,因此它不是全局变量。

如果要使其成为全局变量,请将其移到函数表达式之外。

var aGlobalVariable = 25;
$(document).ready(function() {

就是说,使其成为全球性的公司不是一个好主意。 将其保留在本地范围内,但可被该范围内的所有功能访问,这意味着您可以减少其他脚本对变量的更改。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM