2012-07-16 81 views
-2

我想知道下面的javascript函數之間的區別。有人能幫助我們區別什麼,在什麼情況下我們需要使用這兩種功能?跟jquery和requireJS函數的區別

define(function() { 

}); 

第二個是自我執行功能是低於

(function() { })(); 

更新

我使用requireJS

+0

第一個甚至在香草JS中有效嗎?或者你是否使用jQuery以外的庫/插件? – 2012-07-16 03:31:31

+0

'define'不是Javascript關鍵字或內置函數。你使用'requireJS'嗎?如果是這樣,請參閱[這個問題](http://stackoverflow.com/questions/8350699/explanation-of-define-of-the-requirejs-library)。 – 2012-07-16 03:33:46

+0

是的,我正在使用requireJS – 2619 2012-07-16 03:35:27

回答

2

你的問題標題中提到了 「jQuery函數」,但在你顯示的代碼中沒有jQuery。

代碼的第一位:

define(function() { 

}); 

...調用一個名爲define函數,並傳遞一個匿名函數作爲參數

第二(某種回調的?):

(function() { })(); 

定義一個匿名函數並立即調用它。

「我們需要使用這兩種功能有什麼區別和什麼情況?」

請教關於何時使用define()功能指導RequireJS API文檔。至於第二個例子中的直接調用匿名函數,您可能會使用這種結構的原因有很多,例如,一個常見的原因是創建工作變量和/或嵌套函數而不創建全局變量。

要我想比較這兩種方式(沒有更多的情況下,無論如何)不會做出比比較setTimeout(function(){ },1)(function() { })();(或比較其他任何隨機函數,它接受一個函數作爲參數)任何更有意義。