2

有没有区别

(function (){alert('')}    ())

对比

(function (){alert('')})    ()

两者都有效,但我应该什么时候使用它们?

4

2 回答 2

4

包装括号仅用于强制解析器将构造解析为函数表达式,而不是函数声明。这是必要的,因为调用函数声明是非法的,但调用函数表达式是合法的。

为此,调用括号的位置并不重要。您如何强制将函数解析为表达式也无关紧要。以下内容也可以:

!function () {
    alert('')
}();

~function () {
    alert('')
}();

// Any unary operator will work

如果您决定使用包装括号(分组运算符),请记住JSLint 会告诉您将调用括号移到. 这只是一种风格选择,如果你愿意,你可以忽略它。

于 2013-03-15T09:43:21.473 回答
1

他们都做同样的事情。

JSLint 建议您使用第一个,在分组括号内使用执行括号,大概这样所有内容都整齐地组合在一起。

对于它的价值,我个人认为您的第二个示例更清晰,因为在扫描代码时,您可以看到执行从函数表达式中脱颖而出。

虽然不是重复的,但这个问题涵盖了类似的基础,因此可能值得一看。

于 2013-03-15T09:43:50.367 回答