函數聲明:function sum(){}
函數表達式:var sum = function(){}
函數聲明,解析器可以通過一個名爲‘函數聲明提升’的過程。讀取並將函數聲明添加到執行環境中,對代碼求值時,javascript引擎在第一遍聲明函數並將它們放在源代碼樹的頂部,所以即使聲明函數的代碼調用它的代碼的後面,javascript引擎也能把函數聲明提升到頂部
關於函數聲明,它的一個重要特徵就是函數聲明提升,意思是在執行代碼之前會先讀取函數聲明,這就意味着可以把函數聲明放在調用它的語句後面。
test1:
alert(sum);//不會報錯,因爲函數聲明已經提升到頂部
function sum(){
return 1
}
test2:
alert(sum());//會報錯,在執行到sum()函數所在的語句之前,變量sum不會保留有對函數的引用
var sum = function (){
return 1
}