2011-09-29 90 views

回答

2

這取決於其中你寫這個。 function(){}()本身會產生語法錯誤,因爲它被評估爲函數聲明和那些需要名稱。

通過使用括號或非運算符,可以強制將其解釋爲函數表達式,它們不需要名稱。

在無論如何將其視爲表達式的情況下,您可以省略括號或運算符。

2

我猜你會問,爲什麼使用:

var fn = (function(){}()); 

與:

var fn = function(){}(); 

對我來說,答案很簡單,往往在RHS功能是漫長的,它不是,直到我去底部,並看到關閉(),我意識到我一直在閱讀一個函數表達式而不是函數分配。

完整的解釋在Peter Michaux的An Important Pair of Parens

2

RobG的答案略有差異。

許多腳本在一個函數中包含整個程序,以確保適當的範圍。然後該函數立即使用最後的雙括號運行。但是,這與定義可在頁面中使用但最初不能運行的功能的程序略有不同。

這兩種情況之間的唯一區別是最後兩個字符(添加了雙括號)。由於這些可能是非常長的程序,因此最初的括號表示「將立即運行」。

該程序是否需要運行?不。對於查看代碼並試圖理解它的人有用嗎?是。

相關問題