繁体   English   中英

javascript-函数的执行上下文

[英]javascript - execution context of function

为什么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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM