javascript 闭包中的 (...()) 与 (...)()
IT技术
javascript
comparison
closures
anonymous-function
jslint
2021-01-29 09:53:01
3个回答
没有区别。两者都是让 JavaScript 解析器将您的函数视为表达式而不是声明的有效方法。
请注意,+
和!
也可以工作,有时被缩小器用来保存大小的字符:
+function() {
var foo = 'bar';
}();
!function() {
var foo = 'bar';
}();
编辑
正如@copy 指出的那样,为了完整性,~
也-
将起作用。
-function() {
var foo = 'bar';
}();
~function() {
var foo = 'bar';
}();
之所以存在 JSLint 违规,是因为 Douglas Crockford 说外括号版本看起来像“狗球”。
你可以在这个视频中听到他的讨论:
我认为这看起来很傻,因为我们谈论的是整个调用,但我们把这些东西挂在它外面,看起来有点像……狗球。
他建议里面的括号帮助读者理解整个语句是一个函数表达式而不是一个声明。
不,我不相信有任何区别。我个人更喜欢前者(jQuery 等人似乎也同意),但它们在我测试过的每个引擎中的工作方式都相同。
此外,JSLint 有时有点过于严格。在这方面,JSHint可能会好一些。
其它你可能感兴趣的问题