簡體   English   中英

javascript:在設置全局變量之前,先創建它的未定義范圍

[英]javascript: creating a local scope of a global variable undefines it before it is set

我不了解這種行為:

var a = 1;
console.log('a is undefined1:', a == undefined);
var a;

//iterate selected jQuery elements:
jQuery.each(this, function(index, htmlElement) {
    console.log('a is undefined2:', a == undefined);
    var a;

返回值
a未定義1:否
a未定義2:true

如果最后一行(var a;)被注釋掉,則返回
a未定義1:否
a未定義2:否

我希望總是后者的輸出。 我不知道什么

非常感謝!

var a放在函數內部會創建一個范圍不同a變量。

由於您沒有為其分配值,因此未定義。

當您注釋掉它時,您正在測試的值為1的外部a

變量被吊起。 在函數中的哪個位置使用var foo都無關緊要,該函數的foo仍然適用於整個函數。

使用var在函數內聲明變量將使局部副本(新變量)具有整個函數的作用域-聲明之前是否使用該變量無關緊要。

不要在沒有var情況下聲明變量。

如果要訪問golobal變量,並且具有相同名稱的局部變量,則可以使用window.foo訪問全局foo變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM