在JavaScript語言中,既有function語句,也有函數表達式,這是令人困惑的,因為它們看起來是相同的。一個function語句就是值為一個函數的var語句的簡寫形式。
下面的語句:
function f{}
相當於:
var f=function{}
這裡建議使用第二種形式,因為它能明確表示f是一個包含一個函數值的變量。要用好JavaScript這門語言,理解函數就是數值是很重要的。
function語句在解析時會被提升,這意味著不管function被放置在哪裡,它都會被移動到定義時所在作用域的頂層。這放寬了函數必須先聲明後使用的要求,當然這也會造成混亂。
在if語句中也是禁止使用function語句的。大多數的瀏覽器都允許在if語句中使用function語句,但它們在解析function語句的處理上各不相同,因此造成了可移植性方面的問題。
根據官方的語法約定,一個語句不能夠以一個函數表達式開頭,而以單詞function開頭的語句是一個function語句。解決這個問題的方法就是把函數表達式括在一個圓括號之中。
(function{
//…
});