回答
它被用来强制创建一个本地范围,它避免了通过声明污染当前(通常是全局的)范围。
它可以改写这样的,如果你想避免匿名函数:
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. 请解释这段代码
- 3. 解释这个C代码请
- 4. 请解释这个Ruby代码(在轨)
- 5. 请解释这个java代码
- 6. 请解释这个java代码?
- 7. 请解释为什么这个奇怪的javascript代码工作
- 8. 请解释这段代码的工作?
- 9. 解释这个C++代码
- 10. 解释这个代码
- 11. 解释这个Groovy代码?
- 12. 解释这个代码
- 13. 可以请人解释这段代码?
- 14. 请解释这行js代码。
- 15. 请解释这些Pascal代码..?
- 16. 请解释这个奇怪的JavaScript线
- 17. 请解释Javascript图像旋转代码
- 18. 这是什么Javascript代码?解释
- 19. 请解释的Perl代码
- 20. 请解释的代码
- 21. 请解释的Perl代码
- 22. 这段JavaScript代码确实请解释我什么
- 23. 这行代码的解释?
- 24. 这段代码的解释?
- 25. 请解释这个C代码中的第四行
- 26. 请解释这个python代码的输出
- 27. 请解释这个prolog代码的作用
- 28. 请解释一下这个jquery代码是怎么说的
- 29. 请解释TSQL代码:
- 30. 请解释一下代码
这基本上是一个匿名函数。在这里看到更多的细节http://stackoverflow.com/questions/1140089/how-does-an-anonymous-function-in-javascript-work – ashishjmeshram 2011-03-28 13:42:49