26

可能重複:
What does this mean? (function (x,y)){…}){a,b); in JavaScript
What do parentheses surrounding a JavaScript object/function/class declaration mean?這是什麼「(function(){});」,括號內的函數,意味着在JavaScript中?

大家好

我不知道以下哪些呢:

(function(){ 
    // Do something here 
    ... 
})(someWord) //Why is this here?; 

我闕是:

  1. 將一個函數放在括號中的含義.i.e。 (function(){});
  2. 一組括號在函數結尾做了什麼?

我通常在jQuery代碼和其他一些JavaScript庫中看到這些。

+1

這裏同樣的問題:http://stackoverflow.com/questions/3921922/what-does-this-mean-function-xyab- in-javascript/3921997#3921997 – DoXicK 2010-10-28 14:14:19

回答

48

你立即調用某個特定參數的anonymus功能。

一個例子:

(function(name){ 
    alert(name); 
})('peter') 

這提醒 「彼得」。

在jQuery中的情況下,你可能傳遞jQuery作爲參數,並在你的函數中使用$。所以,你仍然可以使用jQuery在noConflict模式,但使用方便的$

jQuery.noConflict() 
(function($){ 
    var obj = $('<div/>', { id: 'someId' }); 
})(jQuery) 
+0

感謝您的回覆,現在有意義 – Shaoz 2010-10-28 14:38:39

+0

可以給這個函數命名嗎?還是必須是匿名的? – 2017-06-06 10:33:39

8

您正在製作一個立即被調用的函數,其中someWord作爲參數。

+0

哇,這是最清晰的答案,我明白了。謝謝 – Shaoz 2010-10-28 15:07:46

+0

不客氣。 – 2010-10-28 15:27:38

6

這是一種定義匿名函數然後立即執行它的方法 - 不會留下任何痕跡。函數的範圍是真正的本地。最後的括號表示執行該函數 - 括號括號用於消除正在執行的內容。

7

基本上這可以讓你聲明一個匿名函數,然後把它括在圓括號裏並且寫上(someWord)你正在運行這個函數。你可以把它看作聲明一個對象,然後立即實例化對象。

7

它用於創建匿名函數(沒有名稱的函數可以在其他函數中「嵌套」)並將參數傳遞給該函數。 someWord作爲參數傳遞,函數可以使用關鍵字「arguments」讀取它。用法

簡單的例子:

function Foo(myval) { 
    (function(){ 
     // Do something here 
     alert(arguments[0]); 
    })(myval); //pass myval as argument to anonymous function 
} 
... 
Foo(10); 
相關問題