可能重复:
Difference between (function(){})(); and function(){}();
Are “(function ( ) { } ) ( )” and “(function ( ) { } ( ) )” functionally equal in JavaScript?
我只是想知道这两个例子之间是否存在差异(关于功能):
第一
(function foo() {
console.log("bar")
})()
第二
(function foo() {
console.log("bar")
}())
两者似乎都很好......
谢谢!
答案 0 :(得分:10)
没有区别。实际上,您只需使用()
因为简单...
function() { console.log('bar'); } ();
... JS解析器无法正确识别。如ES5 standard中所述:
此外,ExpressionStatement不能以function关键字开头 因为这可能会使FunctionDeclaration模糊不清。
替代((...)
)解决方案是使用一些一元运算符来扩充此语句。既...
+function() { console.log('bar'); } ();
......和......
!function() { console.log('bar'); } ();
......会奏效。
答案 1 :(得分:4)
它们完全一样。在效率,输出或使用方面,两者之间没有任何区别。使用任何一个都是一个偏好的问题。
虽然JS小工具常用的两种形式的变化较小。也就是说,逻辑NOT
- 函数表达式并调用它:
!function() {
console.log( x );
}();
答案 2 :(得分:2)
它们之间没有区别。两者都是immediately invoked function expressions。像Douglas Crockford这样的人更喜欢second method。有些人更喜欢第一个。有趣的是,Crockford的JSLint不允许第一种方法,所以我认为第二种方法更常见。
哦,如果您使用函数声明而不是函数表达式,那么您可以在函数出现之前调用该函数。这是因为声明在JavaScript中提升:
greet(); // This will work
function greet() {
alert("Merry Christmas!");
}
对于函数表达式,情况并非如此:
greet(); // This will not work
var greet = function greet() {
alert("Merry Christmas!");
};
这就是你现在需要知道的全部内容。