var a,b;
(function(){
alert(a);
alert(b);
var a=b=3;
alert(a);
alert(b);
})();
alert(a);
alert(b);
输出结果应为:undefined,undefined,3,3,undefined,3
解析:由于var a=b=3, 所以a是局部变量,b是全局变量。
var a,b;
(function(){
alert(a); //这是第一个输出的,先在局部没找到a变量,然后去全局找,找到了但没定义,输出undefined
alert(b); //这是第二个输出的,其他同上
var a=b=3; //定义一个局部变量a=3,然后给全局变量b赋值 b=3;
alert(a); //这是第三个输出,局部变量a=3
alert(b); //这是第四个输出,全局变量b=3
})(); //这个函数体已经执行完毕,里面的内存已经被垃圾回收器回收,局部变量a销毁
alert(a); //这是第五个输出,全局变量a=undefined
alert(b); //这是第六个输出,全局变量b=3
所以正确输出是undefined,undefined,3,3,undefined,3