我知道这很愚蠢,但这之间有什么区别:
(function() { var foo = 'bar'; })();
和这个?
(function() { var foo = 'bar'; }());
JSLint告诉我们Move the invocation into the parens that contain the function,但是我认为没有必要。
Move the invocation into the parens that contain the function
编辑: 答案太酷了。~function,JSHint替代品,以及jQuery的偏好(/***/)();和Crockford的解释!我以为我只会得到“他们是同一件事”的答案。
~function
(/***/)();
没有区别 两种方法都是使JavaScript解析器将函数视为 表达式 而不是 声明的 有效方法。
请注意,+和!也可以使用,并且有时被缩小器用来保存大小字符:
+
!
+function() { var foo = 'bar'; }(); !function() { var foo = 'bar'; }();
编辑
正如@copy指出的那样,出于完整性考虑,它~也-将起作用。
~
-
-function() { var foo = 'bar'; }(); ~function() { var foo = 'bar'; }();