为什么z()
执行上下文不覆盖全局x
变量?
var x = 10;
function z(){
var x = x = 20;
}
z();
console.log(x); // Why is 10 printed? Shouldn’t it be 20.
<小时/>
var a = b = c = 0;
这意味着 b
和 c
被声明为全局变量,而不是预期的局部变量。
例如:
var y = 10;
function z(){
var x = y = 20; // Global y is overridden.
}
z();
console.log(y); // Value is 20.
按照上述逻辑,z()
中的 x = x = 20
意味着 x
是全局的,它会覆盖本地 x
变量,但 x
的全局值仍然是 10
。
最佳答案
function z(){
var x = x = 20;
}
由于hoisting ,这实际上变成了:
function z(){
var x;
x = x = 20;
}
因此该函数中 x 的每个实例都引用局部变量,而不是全局变量。
关于javascript - javascript 执行上下文中的作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47229365/