function fun(){ console.log(1); } fun(); //2 function fun(){ console.log(2); } fun(); //2 var fun=100; fun(); //报错,fun不是一个函数了
解析:
程序在执行前,都会先找到var声明得到变量和function声明的函数,提前到当前作用域的顶部,但是赋值会留在原地。
function fun(){console.log(1);} function fun(){console.log(2);}
|
所以第一次调用和第二次调用fun都输出2;然后将100赋值给了fun,所以第三次调用时,变量fun已经不是一个函数了,所以无法调用,调用了就会报错