-
函數(shù)聲明和函數(shù)表達(dá)式的區(qū)別
- 優(yōu)先級
- JavaScript的變量聲明提升機(jī)制-即可以先使用宰睡,后聲明
- 函數(shù)聲明會被提升到作用域的最前面
- 函數(shù)表達(dá)式不會被提升锋恬,運行時賦值挺狰,賦值完才能調(diào)用(IIFE就不需要賦值了)
- 名稱
- 函數(shù)表達(dá)式可以沒有名字
- 形式
- 函數(shù)表達(dá)式簡單理解就是一個函數(shù)賦值給一個變量政敢,這個變量就叫函數(shù)表達(dá)式
- 優(yōu)先級
舉個例子
var print // 下面的函數(shù)聲明被提升了邀泉,所以這里 typeof print === function
print() // 2
var print = function (){
console.log(1);
} // 函數(shù)表達(dá)式賦值嬉挡,且覆蓋函數(shù)聲明
print() // 1
function print(){
console.log(2);
} // 函數(shù)聲明
print() // 1
- 所以輸出順序是:
2
1
1
es6 的let不會被提升