工作面试中我们经常会遇到这样的题目:
var a = "Hello";
function b() {
alert(a);
var a = "World";
alert(a);
}
b();
正确的运行结果是:undefined,world
为什么是这个结果呢?
首先我们要明确几点:
上面的题目,在经过js预编译之后,会变成如下:
var a=undefined;
a = "Hello";
function b() {
var a=undefined;
alert(a);
a = "World";
alert(a);
}
b();
**所以,当第一次alert时,在函数b作用域内去找变量a的var定义,值为undefined;
当第二次alert时,b作用域内的变量a被赋值world,所以值为world**
原文地址:http://blog.csdn.net/u012193330/article/details/46332083