2013-12-16 162 views
1

请考虑javascript中的以下片段。 下面的代码片断的输出是: 第一个警报显示“未定义”,而第二警报显示“2”javascript中的全局范围和局部范围

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

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

回答

4

你看到的是variable hoisting在行动。

这是代码是如何被解释:在JavaScript

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