请考虑javascript中的以下片段。 下面的代码片断的输出是: 第一个警报显示“未定义”,而第二警报显示“2”javascript中的全局范围和局部范围
var a = 1;
function test(){
alert(a);
var a = 2;
alert(a);
}
test();
为什么第一警报不显示全局变量a为1的值?
请考虑javascript中的以下片段。 下面的代码片断的输出是: 第一个警报显示“未定义”,而第二警报显示“2”javascript中的全局范围和局部范围
var a = 1;
function test(){
alert(a);
var a = 2;
alert(a);
}
test();
为什么第一警报不显示全局变量a为1的值?
这就是所谓的 “吊装”。你的函数自动转换成这一个:关于
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/
你看到的是variable hoisting在行动。
这是代码是如何被解释:在JavaScript
function test(){
var a; // a === undefined
alert(a);
a = 2;
alert(a);
}