嗨,我有一段代碼。當我刪除相同代碼的非相關部分時,我對值x1的更改感到困惑。我搜查了一下,然後我才知道這與吊裝有關。但即使對我來說,提升概念的價值x1仍然不清楚。有人可以讓我清楚嗎?變量提升示例
var x = 10;
function main() {
document.write("<br>x1 is " + x);
x = 20;
if (x > 0) {
var x = 30;
document.write("<br>x2 is " + x);
}
var x = 40;
var f = function(x) {
document.write("<br>x3 is " + x);
}
f(50);
}
main();
此代碼的輸出是:
x1爲未定義
X2爲30
X3是50
如果我改變了代碼到:
var x = 10;
function main() {
document.write("<br>x1 is " + x);
}
main();
輸出是:
X1是10
他們實際上重新定義VAR範圍X = 30;他們把原來的x簽到20就好了。 – EasyBB
不確定你是否認爲「殺死範圍」是正確的。至少「刪除它的範圍」是錯誤的,如果至少有可怕的誤導。只有多個作用域,現在在不同作用域中有*兩個變量*,*名稱相同。 – Bergi
@Bergi - 你是對的,爲將來的訪問者編輯 – Jesse