说明:以上内容包含两个可能重复的问题链接。
(function(){
//something here...
})() <--//This part right here.
这个
)()
到底是什么意思?如果我把它改成())
会怎样?(function(){
//something here...
}()) <--//Like this
说明:以上内容包含两个可能重复的问题链接。
(function(){
//something here...
})() <--//This part right here.
)()
到底是什么意思?如果我把它改成())
会怎样?(function(){
//something here...
}()) <--//Like this
它们是一样的。
要使其成为有效的Javascript语法,必须在函数定义或函数调用周围加上括号,但使用哪种方式并不重要。
为了演示它的作用,使用命名函数如下:
function something() {}
// parenthesis around the function reference:
(something)();
// parenthesis around the function call:
(something());
这声明了一个匿名函数并立即调用它。
这样做的好处是,函数内部使用的变量不会被添加到当前作用域中,也不会向当前作用域中添加函数名称。
需要注意的是,括号包围函数声明不是任意的。如果删除这些括号,将会出现错误。
最后,你实际上可以使用额外的括号将参数传递给匿名函数,例如:
(function (arg) {
//do something with arg
})(1);
这是一个匿名函数,在 () 调用函数时立即执行,整个函数被包裹在 ( 和 ) 中。
( // arbitrary wrapping
(function() { // begin anon function
}) // end anon function
() // call the anon function
) // end arbitrary wrapping
(
)
,这样它就能使用()
立即调用该函数。(function(){
alert('Hi');
})();
警告:嗨,当
function(){
alert('Hi');
}
由于您的功能从未被执行,因此它不起作用。
function(){ //Code }();
。 - Paul这是一个立即调用的匿名函数。())
不起作用,因为在使用 () 调用函数之前,你需要在函数周围加上 ()
。
有点类似于:
function a(){}
a();
这只是一个匿名函数。 ()
括号立即调用该函数,而不是等待在其他地方被调用。
这是声明一个匿名函数并立即执行它。这在创建作用域变量时很常见。
Function
对象值的表达式。()
,那么你就有效地在定义它之后调用该函数。