【发布时间】:2013-12-16 02:08:13
【问题描述】:
考虑以下 javascript 中的 sn-p。 以下 sn-p 的输出是: 第一个警报显示“未定义”,而第二个警报显示“2”
var a = 1;
function test(){
alert(a);
var a = 2;
alert(a);
}
test();
为什么第一个警报没有显示全局变量 a 的值为 1?
【问题讨论】:
标签: javascript
考虑以下 javascript 中的 sn-p。 以下 sn-p 的输出是: 第一个警报显示“未定义”,而第二个警报显示“2”
var a = 1;
function test(){
alert(a);
var a = 2;
alert(a);
}
test();
为什么第一个警报没有显示全局变量 a 的值为 1?
【问题讨论】:
标签: javascript
您所看到的是variable hoisting 在行动。
这就是代码的解释方式:
function test(){
var a; // a === undefined
alert(a);
a = 2;
alert(a);
}
【讨论】:
在 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/
【讨论】: