2012-10-11 39 views
1

當我們啓動一個計劃,以建立一個發人深省模塊模式,是什麼構成模式啓動這種方式的最大區別......各種開口打造揭示模塊模式

var MODULE = function() {}(); 

和構成模式走這條路...

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

好處?目的?

另外作爲一個額外的問題,這些技術是否允許jQuery處理而不將$傳遞給它們呢?

感謝您的任何反饋!

回答

2

有一個jsHint選項警告函數不包裹在parens中時。該選項的描述如下:

「此選項禁止使用直接函數調用,而不在括號包裹他們結束語括號幫助你的代碼的讀者理解是表達的是一個函數的結果,而不是功能本身。「

至於你關於jQuery的問題;是的,顯然,jQuery將可用,只要你已經包含它。話雖如此,我仍然建議將'$'或'jQuery'作爲參數傳遞給你的函數。如果你不這樣做,每次引用它時,引擎都必須到父範圍去找它。不是一個大問題,但效率較低,特別是如果你大量使用jQuery。如果你傳遞它,那麼jQuery就定義在你函數的作用域中,並且不需要在祖先範圍內搜索它。

+0

所以我的第二個例子是一個函數的表達式,而第一個函數本身就是簡單的函數。那是對的嗎? – blackhawk

+1

不,他們都做同樣的事情,第二個更明顯。在parens中立即調用的函數是標識變量獲取函數返回值的標準方法,而不是函數本身。 – Waxen