var a = 1; function test(){ alert(a); var a = 2;
} test();
运行的结果是undifined.不是2.
js 的执行过程中,编辑器先以读入代码段,对代码段中的var 变量和function 定义进行“预解析”,预解析var 变量的时候,初始化为undefined
相当于一下代码:
var a = 1; function test(){ var a; alert(a); a = 2; } test();