先 定义 后 执行
定义 先查 var fn
fn a 优先于 var a
变量解析过程:
查找局部的作用域 -- > 查找上层作用域
var i=10; function a() { alert(i); var i = 2; }; a(); undefined
函数内定义了变量i(无论是在alert之后还是之前定义变量,都认为在此作用域拥有变量i),于是不再向上层的作用域进行查找,直接输出i。
var a,b;
(function(){
alert(a); undefined
alert(b); undefined
var a = b = 3; 等价于 var a = 3; b = 3;
alert(a); 3
alert(b); 3
})();
alert(a); undefined
alert(b); 3