在javascript中考虑以下代码段。 以下代码段的输出是: 第一个警报显示“未定义”,而第二个警报显示“2”
var a = 1;
function test(){
alert(a);
var a = 2;
alert(a);
}
test();
为什么第一个警报不显示全局变量a的值为1?
答案 0 :(得分:4)
您所看到的是variable hoisting正在行动中。
这是代码的解释方式:
function test(){
var a; // a === undefined
alert(a);
a = 2;
alert(a);
}
答案 1 :(得分:2)
在JavaScript中称为“吊装”。您的功能会自动转换为这个功能:
var a = 1;
function test() {
var a;
alert(a);
a = 2;
alert(a);
}
test();
很好的解读:http://net.tutsplus.com/tutorials/javascript-ajax/quick-tip-javascript-hoisting-explained/