定义函数有两种方式:函数
sayName("123");//123 function sayName(name){ alert(name); }
sayName("123");//报错,该函数不存在 var sayName = function(name){ alert(name); };
上述代码出现不一样的执行结果,是由于函数声明的一个重要特征:函数声明提高
,意思是函数声明会被提高到顶部,即首先读取函数声明。
与之相似的还有变量声明提高
,即将变量的声明提高到顶部。code
var sayName = function(){ alert(1); }; function sayName(){ alert(2); } sayName();//?
上述代码等价于:io
function sayName(){ //函数声明提高 alert(2); } var sayName;//变量声明提高 sayName = sayName(){ //覆盖函数声明 alert(1); } sayName();//1
注:函数声明提高
先于变量声明提高
,且不会被变量声明提高
所覆盖。function