看看这个“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?
最佳答案
由于 reincarnate()
包含:
var age;
age = 0;
它在自己的范围内重新声明了 age
变量。随后,名称 age
指的是"new"变量,而不是捕获的变量。
省略 var
关键字会导致捕获的 age
变量被修改。
关于javascript - 评估 JavaScript 示例中的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23784119/