我不明白这种行为:
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: false
a 未定义2:true
如果最后一行(var a;)被注释掉,则返回:
a 未定义1: false
a 未定义2:错误
我总是期望后者的输出。我不知道什么?
非常感谢!
最佳答案
将 var a
放入函数内会创建一个作用域为该函数的不同 a
变量。
由于您没有为其分配值,因此它是未定义的。
当您将其注释掉时,您正在测试值为 1 的外部 a
。
变量被提升。无论您在函数中的哪个位置使用 var foo
,该函数的 foo
仍然适用于整个函数。
关于javascript:创建全局变量的本地范围会在设置之前取消定义它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5603254/