变量作用域

一个小小的题目
写出下面代码的运行结果:

1
2
3
4
5
6
7
8
9
10
var a,b;
(function(){
alert(a);
alert(b);
var a=b=3;
alert(a);
alert(b);
})();
alert(a);
alert(b);

输出结果是什么?

var a,b; //undefined
(function(){
alert(a); //undefined
alert(b); //undefined
var a=3; //局部变量
b=3; //没有var,全局变量
alert(a); //3
alert(b); //3
})();
alert(a); //undefined
alert(b); //3

先执行匿名函数里面的语句~答案是undefined undefined 3 3 undefined 3