有没有区别
(function (){alert('')} ())
对比
(function (){alert('')}) ()
两者都有效,但我应该什么时候使用它们?
有没有区别
(function (){alert('')} ())
对比
(function (){alert('')}) ()
两者都有效,但我应该什么时候使用它们?
包装括号仅用于强制解析器将构造解析为函数表达式,而不是函数声明。这是必要的,因为调用函数声明是非法的,但调用函数表达式是合法的。
为此,调用括号的位置并不重要。您如何强制将函数解析为表达式也无关紧要。以下内容也可以:
!function () {
alert('')
}();
~function () {
alert('')
}();
// Any unary operator will work
如果您决定使用包装括号(分组运算符),请记住JSLint 会告诉您将调用括号移到. 这只是一种风格选择,如果你愿意,你可以忽略它。
他们都做同样的事情。
JSLint 建议您使用第一个,在分组括号内使用执行括号,大概这样所有内容都整齐地组合在一起。
对于它的价值,我个人认为您的第二个示例更清晰,因为在扫描代码时,您可以看到执行从函数表达式中脱颖而出。
虽然不是重复的,但这个问题涵盖了类似的基础,因此可能值得一看。