javascript中的全局范围和本地范围

时间:2013-12-16 02:08:14

标签: javascript

在javascript中考虑以下代码段。 以下代码段的输出是: 第一个警报显示“未定义”,而第二个警报显示“2”

var a = 1;
function test(){
    alert(a);
    var a = 2;
    alert(a);
}
test();

为什么第一个警报不显示全局变量a的值为1?

2 个答案:

答案 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/