可能重复:
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
答案 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);
答案 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
对象值的表达式。
如果你把()
放在它后面,你可以在定义之后立即调用它。