我不明白为什么在scopeTest函数退出后全局x恢复为1。有人可以向我解释一下吗?如果我在函数的局部范围内注释掉x的定义,x将改变并指向200.否则,它仍然是1 ...... !!!
//setting global variable x to 1
var x = 1;
function scopeTest() {
x = 200; //setting global x to 200
alert(x); //200
var x = 500; //creating a local variable x and setting it to 500
alert(x); //500
}
scopeTest();
alert(x); //why is x 1 instead of 200?
答案 0 :(得分:6)
欢迎来到变量吊装陷阱:
在javasript中,变量声明被移动到外部(包含)函数的开头,因此您的代码实际上等同于:
function scopeTest() {
var x;
x = 200; //setting local x to 200
alert(x); //200
x = 500; //creating a local variable x and setting it to 500
alert(x); //500
}