【发布时间】:2012-04-03 16:25:24
【问题描述】:
可能重复:
What does this “(function(){});”, a function inside brackets, mean in javascript?
javascript anonymous function
(函数())()
这用于许多js库,如jquery,YUi
【问题讨论】:
-
您可能还想查看自调用匿名函数
标签: javascript
可能重复:
What does this “(function(){});”, a function inside brackets, mean in javascript?
javascript anonymous function
(函数())()
这用于许多js库,如jquery,YUi
【问题讨论】:
标签: javascript
它只是立即执行括在括号中的代码(第一个块返回一个函数,第二对括号执行它)。
以这两个 sn-ps 为例:
function foo() {
print 'foo';
}
(function() {
print 'foo';
})();
在你调用 foo(); 之前,第一个不会做任何事情;而第二个会立即打印 'foo'。
【讨论】:
您会立即使用特定参数调用匿名函数。
一个例子:
(function(name){ alert(name); })('peter') This alerts "peter".
对于 jQuery,您可以将 jQuery 作为参数传递并在函数中使用 $。所以你仍然可以在 noConflict-mode 下使用 jQuery,但使用方便的 $:
jQuery.noConflict() (function($){ var obj = $('<div/>', { id: 'someId' }); })(jQuery)
【讨论】:
这是一个匿名的自执行函数。它是匿名的,因为它没有被命名,并且是自执行的,所以它运行(没有其他方法可以运行未命名的函数)。
封装一个谨慎的代码模块特别有用,因为它充当了一个闭包,防止变量泄漏到全局命名空间中。
【讨论】:
这就是所谓的模块模式。这个想法是有一个封装的模块,它不能与您或其他人创建的任何其他模块冲突。您可以在该模块中创建公共和私有方法。 见:Js Pattern
【讨论】:
我不确定(function())() 是什么意思,但我会假设您的意思是(function() { … })()。大致是这样的:
f = function() { … }; // Define a function.
f(); // Call it.
唯一的区别是它不需要变量。
【讨论】: