我们都知道函数中声明变量不用Var时这个变量会成为全局变量,但是并不是函数一开始执行就会把它变为全局变量,必须执行到这条语句。
看一段代码
function f(){
alert(a);
a = 3;
}
f(); //error: a is not defined
只有函数内部执行到a = 3时,a才会成为全局变量并且等于3,因为这个函数不可能执行到这句语句,所以error: a is not defined
再看一段代码
(function(){
bar();
bar=function(){
alert("1")}
}
)();
依旧是:Uncaught ReferenceError: bar is not defined