对这个 Eloquent Javascript 有点困惑 explanation参数和范围。
它声明在函数外部声明的变量是全局变量,在函数内部声明的变量是局部变量,在函数内部声明的没有前置 var
的变量本质上是引用一个类似命名的全局变量.美好的。这就说得通了。但是这段代码让我陷入了循环。
var x = "outside";
var f1 = function() {
var x = "inside f1";
};
f1();
console.log(x);
// → outside
var f2 = function() {
x = "inside f2";
};
f2();
console.log(x);
// → inside f2
在第一个函数中注销 x 的值应该导致“inside f1”,因为该变量是在本地声明的。第二个函数(因为它包含一个没有声明的变量 var
,因此引用了在最顶部声明的全局变量)应该导致“外部”。但是……这两种情况都不是。
我明白了应该发生的事情的要点。但除非我读错了,否则它似乎与作者描述的相反。这不可能是错别字。
最佳答案
f1
中的 x
是一个新变量只能在 f1
中访问并且对第一个没有影响, 全局 x
。为了清楚起见,您问题中的示例代码基本上可以像下面这样编写:
var globalX = "outside";
var f1 = function() {
var localF1X = "inside f1";
};
f1();
console.log(globalX); // → outside
var f2 = function() {
globalX = "inside f2";
};
f2();
console.log(globalX); // → inside f2
关于javascript参数和范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29998219/