Pet*_*ich 0 javascript closures scope local undefined
我不明白这种行为:
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;
Run Code Online (Sandbox Code Playgroud)
返回:
a是undefined1:false
a是undefined2:true
如果最后一行(var a;)被注释掉,则返回:
a is undefined1:false
a is undefined2:false
我希望总是后者输出.我不知道什么?
非常感谢!
把var a一个函数内部创建一个不同的a范围限定于该功能的变量.
由于您没有为其赋值,因此未定义.
当你注释掉它时,你正在测试a值为1 的outer .
变量被悬挂.在您使用的函数中var foo,无论何处,该foo函数仍然适用于整个函数.