函数声明优先于变量声明

68 阅读1分钟

因为函数声明优于变量声明。我们知道在代码逐行执行前,函数声明和变量声明会提前进行,而函数声明又会优于变量声明,这里的优于可以理解为晚于变量声明后,如果函数名和变量名相同,函数声明就能覆盖变量声明。

console.log(typeof fn);     // function
function fn() {};
var fn;

所以以上代码将函数声明和变量声明调换顺序还是一样结果。

 alert(a); 
 a(); 
 var a = 3; 
 function a (){ alert(10) } 
 alert(a); 
 a = 6; 
 a()

可以得到如下形式的代码(注释为输出)

 function a(){alert(10)};
 alert(a);               //结果是function a(){alert(10)}
 a();                    //弹框弹出10
 var a = 3;
 alert(a);               //弹出框输出3
 a = 6;
 a();                    //a此时是变量,不是函数,输出是Uncaught TypeError: a is not a function