[英]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.