34

可能的重复:
这是什么意思?(函数 (x,y)){…}){a,b); 在 JavaScript
中,围绕 JavaScript 对象/函数/类声明的括号是什么意思?

大家好

我不知道以下内容是做什么的:

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

我的问题是:

  1. 将函数放在括号内是什么意思 .ie (function(){});
  2. 函数末尾的括号集有什么作用?

我通常在 jquery 代码和其他一些 javascript 库中看到这些。

4

5 回答 5

55

您立即使用特定参数调用匿名函数。

一个例子:

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

这会提醒“彼得”。

在 jQuery 的情况下,您可以jQuery作为参数传递并$在您的函数中使用。所以你仍然可以在 noConflict-mode 中使用 jQuery,但使用方便$

jQuery.noConflict()
(function($){
  var obj = $('<div/>', { id: 'someId' });
})(jQuery)
于 2010-10-28T14:13:41.710 回答
11

您正在制作一个立即被调用的函数,并someWord作为参数。

于 2010-10-28T14:10:46.583 回答
7

这是一种定义匿名函数然后立即执行它的方法——实际上不留下任何痕迹。该函数的范围是真正的本地。最后的()括号执行函数——封闭的括号是为了消除正在执行的内容的歧义。

于 2010-10-28T14:11:49.720 回答
7

基本上,这允许您声明一个匿名函数,然后将其括在括号中并编写(someWord)您正在运行的函数。您可以将其视为声明一个对象,然后立即实例化该对象。

于 2010-10-28T14:12:23.210 回答
7

它用于创建匿名函数(可以“嵌套”在其他函数中的没有名称的函数)并将参数传递给该函数。someWord 作为参数传递,函数可以使用关键字“arguments”读取它。

简单的使用示例:

function Foo(myval) {
    (function(){
      // Do something here
      alert(arguments[0]);
    })(myval); //pass myval as argument to anonymous function
}
...
Foo(10);
于 2010-10-28T14:13:25.377 回答