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