2012-01-31 146 views

回答

1

你的第一個例子是 「函數聲明」。它聲明瞭一個函數,它可以在聲明範圍內的任何地方使用(所以你可以在它出現在源代碼之前調用它)。這有時被稱爲「提升」(因爲它會被提升到其範圍的頂部)。

你的第二個例子是「命名函數表達式」。變量聲明被提升到它定義的範圍的頂部(如函數聲明),但分配仍然發生在你​​期望的地方,所以你不能調用函數直到它被賦值給變量。

還有第三種選擇,這只是一個「函數表達式」,這裏的函數沒有一個名字(它是一個匿名函數):

var a = function() { 
    console.log('a'); 
} 

你可能會發現你有對命名函數表達式的使用很少(儘管它在調試時很有用),所以通常使用匿名函數更好。在命名函數表達式中,名稱僅在函數本身的範圍內,因此您不能通過名稱正常引用該函數。

相關問題