看看这个" CoffeeScript - 加速JavaScript开发"例如:
(function() {
var age, reincarnate;
age = 99;
reincarnate = function() {
var age;
age = 0;
console.log("inner age:", age);
return age;
};
reincarnate();
console.log("I am " + age + " years old");
}).call(this);
为什么age
在此示例中打印到99
?
reincarnate
,一个闭包(据我所知),可以访问age
。为什么它的操作不会将age
更改为0?
答案 0 :(得分:2)
由于reincarnate()
包含:
var age;
age = 0;
它在自己的范围内重新声明age
变量。随后,名称age
指的是" new"变量,而不是捕获的变量。
省略var
关键字会导致捕获的age
变量被修改。