【发布时间】:2012-07-12 17:28:04
【问题描述】:
如果我这样做:
var a = 0;
(function () {
var a = a; //want to make local a = global a
++a;
console.log("fn",a);
})();
console.log(a);
输出是:
fn NaN
0
为什么自执行函数内部的a变成NaN?
我知道如果我这样做会很好:
(function () {
var b = a;
++b;
console.log("fn",b); // fn 1
})();
但如果我走第一个版本的路,它就有NaN 的问题。
为什么会这样?
【问题讨论】:
-
我不知道为什么会这样,但我尝试使用
var a = window.a并且它的行为正常 -
@Ibu 嗯,这很奇怪......
-
因为所有全局变量都在窗口范围内
标签: javascript scope