[英]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.