gpt4 book ai didi

javascript - 函数的执行上下文

转载 作者:行者123 更新时间:2023-11-30 09:29:28 24 4
gpt4 key购买 nike

为什么 z() 执行上下文不覆盖全局 x 变量?

var x = 10;

function z(){
var x = x = 20;
}
z();
console.log(x); // why is 10 printed? Shouldn’t it be 20.

变量 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

最佳答案

内部x声明是hoisted到函数的顶部,并遮盖了外部作用域的 x。您的代码实际上是这样做的:

var x = 10;

function z(){
var x;
x = x = 20;
}
z();
console.log(x); // why is 10 printed? Shouldn’t it be 20.

关于javascript - 函数的执行上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47228696/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com