这个“(function(){});”,括号内的函数在javascript中是什么意思?

时间:2010-10-28 14:05:57

标签: javascript coding-style scope anonymous-function javascript-namespaces

  

可能重复:
  What does this mean? (function (x,y)){…}){a,b); in JavaScript
  What do parentheses surrounding a JavaScript object/function/class declaration mean?

大家好

我不知道以下内容:

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

我的问题是:

  1. 将函数放在括号内是什么意思。 (function(){});
  2. 功能结束时括号组的作用是什么?
  3. 我通常在jquery代码和其他一些javascript库中看到这些。

6 个答案:

答案 0 :(得分:50)

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

一个例子:

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

此警告“彼得”。

对于jQuery,您可以将jQuery作为参数传递,并在函数中使用$。所以你仍然可以在noConflict模式下使用jQuery但是使用方便的$

jQuery.noConflict()
(function($){
  var obj = $('<div/>', { id: 'someId' });
})(jQuery)

答案 1 :(得分:8)

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

答案 2 :(得分:7)

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

答案 3 :(得分:7)

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

简单的使用示例:

function Foo(myval) {
    (function(){
      // Do something here
      alert(arguments[0]);
    })(myval); //pass myval as argument to anonymous function
}
...
Foo(10);

答案 4 :(得分:6)

这是一种定义匿名函数然后立即执行它的方法 - 不留下任何痕迹。该功能的范围是真正的本地。最后的()括号执行函数 - 括号括起来消除正在执行的内容。

答案 5 :(得分:2)

或许this帖子会对你有所帮助。