我不明白这种行为:
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是undefined1:false
a是undefined2:true
如果最后一行(var a;)已注释掉,则返回:
a是undefined1:false
a是undefined2:false
我希望始终是后者的输出。什么我不知道?
非常感谢!
答案 0 :(得分:6)
将var a
置于函数内会创建一个不同的a
变量,该变量的作用域是该函数。
由于您没有为其指定值,因此未定义。
当您对其进行评论时,您正在测试值为1的外部a
。
悬挂变量。在使用var foo
函数的位置无关紧要,该函数的foo
仍然适用于整个函数。
答案 1 :(得分:1)
使用var
在函数内声明变量会使整个函数的范围内的本地副本(新变量) - 在声明它之前是否使用它无关紧要。
永远不要在没有var
的情况下声明变量。
如果您想访问golobal变量并且您拥有相同名称的本地变量,则可以使用foo
window.foo
变量