如果我这样做:
输出结果如下:
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