这是什么? (function(){})()

时间:2011-07-21 22:45:07

标签: javascript function

  

可能重复:
  What does this JavaScript snippet mean?
  Location of parenthesis for auto-executing anonymous JavaScript functions?

(function(){

    //something here...

})() <--//This part right here.

这究竟是什么)()? 如果我将其更改为此())该怎么办?

(function(){

    //something here...

}()) <--//Like this

8 个答案:

答案 0 :(得分:5)

他们是一样的。

在函数定义周围或函数调用周围必须有一个括号,以使其成为有效的Javascript语法,但无论你使用哪个都无关紧要。

为了演示它的作用,使用命名函数,它将是:

function something() {}

// parenthesis around the function reference:
(something)();

// parenthesis around the function call:
(something());

答案 1 :(得分:5)

这声明了一个匿名函数并立即调用它。

这样做的好处是函数内部使用的变量不会添加到当前作用域,也不会将函数名称添加到当前作用域。

重要的是要注意,函数声明周围的括号是任意的。如果删除这些,则会出错。

最后,您可以使用额外的括号将参数传递给匿名函数,如

(function (arg) {
   //do something with arg
})(1);

请参阅http://jsfiddle.net/eb4d4/

答案 2 :(得分:3)

这是一个匿名函数,可以立即调用()调用函数,并且(和)包装整个函数。

( // arbitrary wrapping
(function() { // begin anon function

}) // end anon function
() // call the anon function
) // end arbitrary wrapping

答案 3 :(得分:2)

第一个只是将函数包含在( )中,以便它可以使用()

立即调用函数
(function(){
    alert('Hi');
})();

提醒嗨,而

function(){
    alert('Hi');
}

由于您的功能从未执行过,所以不执行任何操作。

答案 4 :(得分:1)

它是一个立即调用的匿名函数。 ())无效,因为您需要()围绕该函数,然后才能使用()调用它。

Sorta相当于:

function a(){}
a();

答案 5 :(得分:1)

这只是一个匿名函数。 () parens立即调用该函数,而不是等待在其他地方调用它。

答案 6 :(得分:0)

这是声明一个匿名函数,然后立即执行它。这对于创建范围变量很常见。

答案 7 :(得分:0)

在JavaScript中,函数定义是一个文字 - 这意味着,它是一个带有Function对象值的表达式。

如果你把()放在它后面,你可以在定义之后立即调用它。