在查看Twitter Bootstrap JavaScript中编写的一些代码时,看来他们会立即调用这样的匿名函数:

!function( $ ) {

     ...

}(window.jQuery || window.ender);

传统上,我看到同样的事情就这样做了:

(function($) {

    ...

})(window.jQuery || window.ender);

第一种方法似乎有点骇人听闻,我不确定是否有这种方式有任何好处或理由,而不是第二种方式? 请注意,我了解它的工作原理,我希望理解他们为什么选择这样做。

有帮助吗?

解决方案

  • 缩小时一个较小的字符。
  • ! 应该在此之前处理其他JavaScript代码的位置,并且没有尾随的半彩色。

没有巨大的区别。我会使用您更舒服的任何东西。您可能应该在示例开始时扔东西,以避免...

base.js

var lol = function() {
   alert(arguments[0]);
}

im-concat-to-base.js

(function() {
    // Irrelevant.
})();

JSFIDDLE.

折腾 ; 她工作...

JSFIDDLE.

...或一个 ! 像Twitter Bootstrap ...

JSFIDDLE.

其他提示

他们都是克服语法中的歧义的方式。都不是“骇人听闻”的。这只是一种风格的选择。

您也可以这样做:

0 + function( $ ) {
  // ...
} ( window.jQuery || window.ender );

或者:

parseInt(function( $ ) {
  // ...
} ( window.jQuery || window.ender ) );

而不是评估步骤 !undefined 您也可以使用 void 删除歧义的操作员:

void function($) {
     ...
}(window.jQuery || window.ender);

有一种C质量;-)

我还没有看到的一个答案是,它可以避免使用括号围绕整个功能。在美学考虑之外,对于某些使用括号来确定线条缩进水平的编辑者来说,这可能是一个加号。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top