簡體   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