Javascript 这是什么?(函数(){})()
可能的重复项:Javascript 这是什么?(函数(){})(),javascript,function,Javascript,Function,可能的重复项: 它是一个立即调用的匿名函数())将不起作用,因为在使用()调用函数之前,需要对函数进行()处理 分类相当于: function a(){} a(); 第一个函数只是将函数包装在()中,这样它就可以用()立即调用函数 嗨,你好 function(){ alert('Hi'); } 因为你的函数从未执行过,所以什么都不做。这是一个匿名函数,它会立即被调用()调用函数,并且会(和)包装整个过程 ( // arbitrary wrapping (function() {
它是一个立即调用的匿名函数<代码>())将不起作用,因为在使用()调用函数之前,需要对函数进行
()
处理
分类相当于:
function a(){}
a();
第一个函数只是将函数包装在
(
)
中,这样它就可以用()
立即调用函数
嗨,你好
function(){
alert('Hi');
}
因为你的函数从未执行过,所以什么都不做。这是一个匿名函数,它会立即被调用()调用函数,并且会(和)包装整个过程
( // arbitrary wrapping
(function() { // begin anon function
}) // end anon function
() // call the anon function
) // end arbitrary wrapping
这是声明一个匿名函数,然后立即执行它。这在创建范围变量时很常见。它们是相同的 在函数定义或函数调用周围必须有一个括号,以使其成为有效的Javascript语法,但使用哪个并不重要 要演示它的功能,请使用命名函数:
function something() {}
// parenthesis around the function reference:
(something)();
// parenthesis around the function call:
(something());
这只是一个匿名函数。
()
参数立即调用该函数,而不是等待它在别处被调用。这声明了一个匿名函数并立即调用它
这样做的好处是,函数内部使用的变量不会添加到当前作用域中,您也不会将函数名添加到当前作用域中
需要注意的是,围绕函数声明的括号不是任意的。如果删除这些,您将得到一个错误
最后,您可以使用额外的括号将参数传递给匿名函数,如中所示
(function (arg) {
//do something with arg
})(1);
请参见JavaScript中的,函数定义是一个文本,这意味着它是一个带有
函数对象值的表达式
如果将()
放在函数的后面,那么在定义函数之后就可以有效地调用它。我认为这没有任何作用。我可能是错的。这里的问题是相同的,经常被问到的问题。你的两个例子之间只有一个“语法”上的差异,请检查。它不是自调用,它是一个匿名函数,在创建后立即调用。如果你想让自己调用匿名函数,请阅读这篇博文:本周1600分?伟大的保罗:)@yahelc,你知道些什么。我刚测试过,你是对的。我想我以前也试过这种方法,但它不起作用,我一直认为是这样的,因为。。。那时候我肯定犯了别的错误,哈哈。编辑我的帖子:)@yahelc实际上我想我尝试的是没有任何括号,比如function(){//code}()
@PaulPro删除了否决票。谢谢你的修复:)-1。除非我忽略了什么,否则第二个例子是完全有效的语法。为什么你认为他的第二个例子是无效的?仅供参考,从ie6到最新的chrome和firefox,所有浏览器都接受第二个版本,而且我已经看到它比第一个版本推荐了好几次。您只需要确保整个函数调用都在括号内;例如(function(){console.log('test');}())。From:“当一个函数要被立即调用时,整个调用表达式应该被包装在参数中,这样就可以清楚地看到,生成的值是函数的结果,而不是函数本身。”+1。这是唯一能回答OP所问问题的答案。
( // arbitrary wrapping
(function() { // begin anon function
}) // end anon function
() // call the anon function
) // end arbitrary wrapping
function something() {}
// parenthesis around the function reference:
(something)();
// parenthesis around the function call:
(something());
(function (arg) {
//do something with arg
})(1);