可能重复:
(function(({}(((之间的差异;和函数(({}((
在JavaScript中,"(function(({}((("one_answers"(function(({}((("在功能上相等吗?
我只是想知道这两个例子之间(关于功能(是否有区别:
第一个
(function foo() {
console.log("bar")
})()
第二个
(function foo() {
console.log("bar")
}())
两者似乎都很好。。。
谢谢!
没有区别。事实上,您需要使用()
只是因为简单。。。
function() { console.log('bar'); } ();
JS解析器无法正确识别。正如ES5标准中所说:
此外,ExpressionStatement不能以function关键字开头因为这可能会使它与FunctionDeclaration不明确。
(...)
的另一种解决方案是用一些一元运算符扩充这个语句。二者都
+function() { console.log('bar'); } ();
和
!function() { console.log('bar'); } ();
将起作用。
它们完全相同。两者在效率、产量或使用方面没有任何区别。使用任何一种都是一个偏好问题。
尽管JS minfiers常用的两种形式有一个较短的变体。也就是说,对函数表达式进行逻辑NOT
处理并调用它:
!function() {
console.log( x );
}();
它们之间没有区别。两者都是立即调用的函数表达式。像道格拉斯·克罗克福德这样的人更喜欢第二种方法。有些人更喜欢第一种。有趣的是,Crockford的JSLint不允许使用第一种方法,所以我认为第二种方法更常见。
哦,如果你使用函数声明而不是函数表达式,那么你可以在函数出现在程序中之前调用它。这是因为声明是在JavaScript:中挂起的
greet(); // This will work
function greet() {
alert("Merry Christmas!");
}
对于函数表达式,情况并非如此:
greet(); // This will not work
var greet = function greet() {
alert("Merry Christmas!");
};
这几乎就是你现在需要知道的全部。