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

Der*_*會功夫 8 javascript function

可能重复:
此JavaScript代码段的含义是什么?
用于自动执行匿名JavaScript函数的括号的位置?

(function(){

    //something here...

})() <--//This part right here.
Run Code Online (Sandbox Code Playgroud)

究竟是什么)()
如果我改成它())怎么办?

(function(){

    //something here...

}()) <--//Like this
Run Code Online (Sandbox Code Playgroud)

Guf*_*ffa 5

他们是一样的.

在函数定义周围或函数调用周围必须有一个括号,以使其成为有效的Javascript语法,但是使用哪个并不重要.

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

function something() {}

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

// parenthesis around the function call:
(something());
Run Code Online (Sandbox Code Playgroud)


Exp*_*lls 5

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

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

值得注意的是,围绕函数声明的括号不是任意的.如果删除这些,您将收到错误.

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

(function (arg) {
   //do something with arg
})(1);
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/eb4d4/

  • 为什么你认为他的第二个例子是无效的? (2认同)