函數聲明與函數表達式的區別一直沒有搞清楚,現在就來梳理一下
定義一個函數,又是三種方法:
函數聲明
函數表達式
通過new function構造函數(這種用來生成對象,與題目無關,略)
接下來我們回到主題,函數聲明與函數表達式的區別在哪里?
區別:
- 形式不同;
函數聲明:
function declaration(){
console.log('這是函數聲明')
}
函數表達式:
var expression = function(){
console.log('這是函數表達式')
}
- 函數聲明可以省略標識符(函數名),但是函數表達式必須要有標識符(函數名)
函數表達式省略標識符(函數名)的情況你肯定見過:
function (){
console.log('這是函數聲明')
}
但是函數表達式省略標識符(函數名)的情況你見過嗎:
var = function(){
console.log('這是函數表達式')
}
肯定沒見過吧。
- 函數聲明要提前(最大區別)
函數聲明是在預執行期執行的,就是說函數聲明是在瀏覽器準備執行代碼的時候執行的。因為函數聲明在預執行期被執行,所以到了執行期,函數聲明就不再執行(人家都執行過了自然就不再執行了)。