!function(){}()vs(function(){})()
在审查Twitter Bootstrap Javascript中编写的一些代码时,看起来他们正在调用匿名函数,如下所示:
!function( $ ) { ... }(window.jQuery || window.ender);
传统上,我曾经这样做过这样的事情:
(function($) { ... })(window.jQuery || window.ender);
第一种方式似乎有些不好意思,我不确定这样做有什么好处或理由,而不是第二种方式呢? 请注意,我明白它是如何工作的,我正在理解为什么他们select这种方式来做到这一点。
- 缩小的时候less一个字符。
- 那
!
应该在这之前处理其他JavaScript代码连接的地方,并且没有尾随的分号。
没有太大的差别。 我会使用任何你更舒服的。 你应该在你的例子开始时抛开一些东西来避免…
base.js
var lol = function() { alert(arguments[0]); }
IM-CONCAT到base.js
(function() { // Irrelevant. })();
jsFiddle 。
投中领先;
她的工作…
jsFiddle 。
…或者!
像Twitter Bootstrap …
jsFiddle 。
它们都是通过语法模糊的方式。 也不比其他的更“黑客”。 这只是一种风格的select。
你也可以这样做:
0 + function( $ ) { // ... } ( window.jQuery || window.ender );
要么:
parseInt(function( $ ) { // ... } ( window.jQuery || window.ender ) );
而不是!undefined
的评估步骤,你也可以使用void
操作符来消除模糊性:
void function($) { ... }(window.jQuery || window.ender);
对它有一种C品质;-)
我还没有看到的一个答案是避免用圆括号包围整个函数。 除了审美方面的考虑之外,对于一些使用括号来确定一条线的缩进程度的编辑来说,这是一个优点。