函数 声明的作用域,内部有效,声明提前。
即便 if 判断不执行,重新声明的变量还是属于当前函数,并且声明提前,会输出 undefined.
var a = 1; function fun(){ console.log(a) }; fun() // 1
var a = 1; (function fun(){ console.log(a); if(false){var a = "123"} })(); // undefined
但是 若是 函数 内部重新声明的,又创建了一个域,所以不会重合。没有声明提前一说,输出 1;