嗨,我有一段代码。当我删除相同代码的非相关部分时,我对值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