javascript中函數聲明與函數表達式
- 2020 年 1 月 21 日
- 筆記
在javascript中,我們經常要聲明函數,或者使用函數表達式,今天我們就來說說這兩者的區別。
解析器在執行程式碼的時候,對函數聲明和函數表達式並不是一致的。
解析器會優化讀取函數聲明,這是為了使其他程式碼在使用此函數之前可以使用,函數表達式則不然,必須到函數表達式執行到所在程式碼的區域才會被解釋執行。
我們來看兩個例子:
1.函數聲明:
console.log(action(10,20))
function action(num1,num2){
}
這段程式碼我們一直都知道,是可以通過的吧,這是因為解析器會優化讀取函數,就是為了執行其他程式碼之前可使用。
javascript引擎在第一次會聲明函數並將他們放在源程式碼的頂部,所以即使函數聲明在調用的後面,也能完成執行。
如果使用函數表達式,這樣的調用就會報錯。
2.函數表達式:
console.log(action(10,20));
var action =function(num1,num2){
}
以上程式碼在運行期間就會產生錯誤,這是因為函數表達式。
在執行到函數所在語句之前,解析器根本找不到action這個函數,這就是函數聲明和函數表達式的區別。

