簡體   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