函數聲明和函數表達式的區別

函數聲明:function sum(){}
函數表達式:var sum = function(){}

函數聲明,解析器可以通過一個名爲‘函數聲明提升’的過程。讀取並將函數聲明添加到執行環境中,對代碼求值時,javascript引擎在第一遍聲明函數並將它們放在源代碼樹的頂部,所以即使聲明函數的代碼調用它的代碼的後面,javascript引擎也能把函數聲明提升到頂部

關於函數聲明,它的一個重要特徵就是函數聲明提升,意思是在執行代碼之前會先讀取函數聲明,這就意味着可以把函數聲明放在調用它的語句後面。

test1:
alert(sum);//不會報錯,因爲函數聲明已經提升到頂部
function sum(){
    return 1
}
test2:
alert(sum());//會報錯,在執行到sum()函數所在的語句之前,變量sum不會保留有對函數的引用
var sum = function (){
    return 1
}
發佈了28 篇原創文章 · 獲贊 4 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章