回答
你有什麼存在:
自調用匿名函數
你首先由具有以函數本身paranthesis創建函數表達式。 只是寫
function() {
}()
不會在這種情況下工作,因爲這將定義一個函數聲明。
所以以後我們有,我們可以通話本身通過附加()
(function() {
})();
要驗證,試試這個:
var myval = (function(){return 'self executed!'})();
alert(myval); // === 'self executed'
function(){}
- 函數式,它定義一個功能(function(){})
- 包裝它就像這樣做確保它被視爲一種表達(function(){})()
- 添加()
調用功能
然後返回值賦值給變量。
這通常用於允許使用變量而不污染全局範圍。
'function() {}'只會是賦值中的表達式。 – jAndy 2011-02-24 07:37:22
@jAndy,不僅在一個賦值中,還有* expression *的其他上下文,例如:'0,function(){}','new function(){}','foo(function(){}) '等等...對語法的限制是在* ExpressionStatement *的層次上的,它不能以'{'或標記'function'開始。在*語句上下文*'function(){}'將只是一個'SyntaxError'(語法不產生匹配)。 – CMS 2011-02-24 08:21:12
@CMS:是的,我只是想說只是'function(){}'不一定是一個表達式。 '+ function(){}()'或'!function(){}()'也可以:-) – jAndy 2011-02-24 08:34:17
這function(){}
定義匿名函數
(封閉)
沒有正文。通過將它包裝在大括號中並在末尾添加空的參數列表(()
),您正在運行此閉包。這實際上相當於:
var f = function() {};
f();
這會更容易把握嗎?
(function(x, y, z){})(1, 2, 3)
這裏沒有關閉 – aaronasterling 2011-02-24 07:40:47
已更正,thx。只是爲了澄清 - 如果函數會使用一些在外部定義的局部變量,那麼稱它爲閉包就足夠了嗎? – 2011-02-24 08:03:30
它越來越近了。在該範圍執行_outside_時,它必須從封閉範圍引用局部變量。實際上,這意味着它必須從一個函數中返回,然後除了從一個封閉的範圍引用一個本地以外,它被視爲封閉。 – aaronasterling 2011-02-24 08:12:43
這將創建一個匿名函數並立即調用它。例如
(function ($) {
// Original JavaScript code.
})(jQuery);
將允許你在那裏使用$
,它等於jQuery
。
+1常見示例 - 我總是以';(function ...'開頭)(因爲我寫了分號自由碼,這是ASI可能無法按預期工作的一種情況) – 2011-02-24 09:19:21
我們來分析一下它一塊一塊:
這定義了一個匿名函數(即功能沒有名稱)
function(){}
當然,在{}
括號之間插入一些指令會更有用。現在
,如果你沒有
myval = function(){<something>};
您分配功能MYVAL(函數,而不是它的返回值!)
,那麼你可以調用myval()
,這將是一樣調用功能本身。
在這裏,您可以通過在末尾放置()
來調用函數。因此:
var myval = (function(){})();
調用函數,並把結果myval
- 1. 這個Javascript代碼是什麼意思?
- 2. 這個JS代碼是什麼意思?
- 3. 這個CSS代碼是什麼意思?
- 4. 這個MIP代碼是什麼意思?
- 5. 這個PHP代碼是什麼意思?
- 6. 這個.htaccess代碼是什麼意思?
- 7. 這個C++代碼是什麼意思?
- 8. 這個python代碼是什麼意思?
- 9. 這些代碼行是什麼意思?
- 10. 這是什麼意思PHP代碼? Magento
- 11. 這段代碼是什麼意思?
- 12. 這段代碼是什麼意思?
- 13. 插件代碼 - 這是什麼意思?
- 14. 這段代碼是什麼意思?
- 15. 這行代碼是什麼意思?
- 16. 這些WndProc代碼是什麼意思?
- 17. 這是什麼C++代碼的意思
- 18. 這段代碼是什麼意思?
- 19. Ruby這行代碼是什麼意思?
- 20. 這些代碼是什麼意思?
- 21. 這段代碼是什麼意思?
- 22. 這段代碼是什麼意思?
- 23. 這段代碼是什麼意思?
- 24. 這段代碼是什麼意思?
- 25. 這段代碼是什麼意思?
- 26. 這些swift代碼是什麼意思?
- 27. 這段代碼是什麼意思?
- 28. 這些代碼行是什麼意思?
- 29. 這段代碼是什麼意思?
- 30. 這行代碼是什麼意思
(不是函數本身這個時候),它是一個匿名函數的語法在JavaScript中的[什麼是括號中的作用 – CarneyCode 2011-02-24 07:31:14
可能重複在下面的一段代碼?](http://stackoverflow.com/questions/2938060/whats-the-role-of-the-parentheses-in-the-following-piece-of-code) – 2011-02-24 07:42:19