定義函數有兩種方式:函數
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