回答
它被用來強制創建一個本地範圍,它避免了通過聲明污染當前(通常是全局的)範圍。
它可以改寫這樣的,如果你想避免匿名函數:
var scope = function() { /*...*/ };
scope();
但匿名函數的語法具有以下優勢:父母或全球範圍甚至不是的名字poluted功能。
(function() { /*...*/ })();
這也是實現信息隱藏在JavaScript作爲在此範圍內聲明(函數和變量)將無法從外面看到的好辦法。但是他們仍然可以看到對方,並且在此範圍內聲明的JavaScript實現閉包函數將可以訪問同一範圍內的其他聲明。
這是定義一個沒有名字的函數,並立即調用它。因爲Javascript函數充當關閉 - 持久作用域 - 這是創建一組互連對象或函數的有用方法。
匿名函數是一個函數(或子例程),可以在不綁定標識符的情況下定義並且可能被調用。
這是創建閉包的基本語法。更典型的,它會包含一些代碼:
(function(){
//Your Code Here
})();
這相當於
var some_function = function() {
//Your Code Here
};
some_function();
這樣做的最大的原因是清潔;在任何函數之外聲明的變量都是全局的;然而,這個函數內部聲明的變量包含在這個函數內部,並且不會影響函數之外的任何代碼或與之交互。將任何一種可重用插件封裝在閉包中是一種很好的做法。
它立即執行匿名功能。 它基本上相同:
var test = function(){};
test();
但是不需要使用額外的變量。 您需要將其包裝在其他括號中以獲取作爲表達式結果的函數 - 否則將其理解爲函數聲明,並且不能執行聲明。
它主要用於範圍保護 - 因爲JS具有功能範圍,所以在這樣的函數中定義爲var x;
的每個變量都將保留在它的函數本地範圍內。
所有這些僅僅意味着'立即執行該函數中的所有內容而不會污染全局範圍'。
它也常用於衆所周知的模式,如模塊模式和揭示模塊模式。請參閱http://www.adequatelygood.com/2010/3/JavaScript-Module-Pattern-In-Depth瞭解更多詳情。
它被稱爲立即功能或匿名閉包,是the module pattern的基礎。
它用於爲代碼創建私有本地範圍。
- 1. 請解釋這些代碼
- 2. 請解釋這個java代碼
- 3. 請解釋這個Ruby代碼(在軌)
- 4. 請解釋爲什麼這個奇怪的javascript代碼工作
- 5. 解釋這個Groovy代碼?
- 6. 解釋這個代碼
- 7. 解釋這個代碼
- 8. 請解釋這些Pascal代碼..?
- 9. 可以請人解釋這段代碼?
- 10. 請解釋這行js代碼。
- 11. 請解釋這個奇怪的JavaScript線
- 12. 請解釋Javascript圖像旋轉代碼
- 13. 這是什麼Javascript代碼?解釋
- 14. 請解釋的Perl代碼
- 15. 這段JavaScript代碼確實請解釋我什麼
- 16. 這行代碼的解釋?
- 17. 這段代碼的解釋?
- 18. 請解釋一下這個jquery代碼是怎麼說的
- 19. 請解釋這個prolog代碼的作用
- 20. 請解釋這個C代碼中的第四行
- 21. 解釋此C#代碼,請
- 22. 請解釋一下代碼?
- 23. 請解釋一下代碼
- 24. 解釋這行代碼
- 25. 向我解釋這個過濾器代碼 - JavaScript的
- 26. 你能解釋一下這個代碼(JavaScript)的
- 27. 請給我解釋一下這個C代碼
- 28. 請解釋一下這個PHP代碼 「<<< CSS」
- 29. 請幫忙解釋這個C/linux代碼使用fork()
- 30. 有人可以請給我解釋這個CSS代碼
這基本上是一個匿名函數。在這裏看到更多的細節http://stackoverflow.com/questions/1140089/how-does-an-anonymous-function-in-javascript-work – ashishjmeshram 2011-03-28 13:42:49