天天看點

JS程式設計建議——18:比較function語句和function表達式

建議18:比較function語句和function表達式

在JavaScript語言中,既有function語句,也有函數表達式,這是令人困惑的,因為它們看起來是相同的。一個function語句就是值為一個函數的var語句的簡寫形式。

下面的語句:

function f() {}

相當于:

var f=function() {}

這裡建議使用第二種形式,因為它能明确表示f是一個包含一個函數值的變量。要用好JavaScript這門語言,了解函數就是數值是很重要的。

function語句在解析時會被提升,這意味着不管function被放置在哪裡,它都會被移動到定義時所在作用域的頂層。這放寬了函數必須先聲明後使用的要求,當然這也會造成混亂。

在if語句中也是禁止使用function語句的。大多數的浏覽器都允許在if語句中使用function語句,但它們在解析function語句的處理上各不相同,是以造成了可移植性方面的問題。

根據官方的文法約定,一個語句不能夠以一個函數表達式開頭,而以單詞function開頭的語句是一個function語句。解決這個問題的方法就是把函數表達式括在一個圓括号之中。

(function () {

//…

}());

繼續閱讀