!function(){}()vs(function(){})()()
-
25-10-2019 - |
题
在查看Twitter Bootstrap JavaScript中编写的一些代码时,看来他们会立即调用这样的匿名函数:
!function( $ ) {
...
}(window.jQuery || window.ender);
传统上,我看到同样的事情就这样做了:
(function($) {
...
})(window.jQuery || window.ender);
第一种方法似乎有点骇人听闻,我不确定是否有这种方式有任何好处或理由,而不是第二种方式? 请注意,我了解它的工作原理,我希望理解他们为什么选择这样做。
其他提示
他们都是克服语法中的歧义的方式。都不是“骇人听闻”的。这只是一种风格的选择。
您也可以这样做:
0 + function( $ ) {
// ...
} ( window.jQuery || window.ender );
或者:
parseInt(function( $ ) {
// ...
} ( window.jQuery || window.ender ) );
而不是评估步骤 !undefined
您也可以使用 void
删除歧义的操作员:
void function($) {
...
}(window.jQuery || window.ender);
有一种C质量;-)
我还没有看到的一个答案是,它可以避免使用括号围绕整个功能。在美学考虑之外,对于某些使用括号来确定线条缩进水平的编辑者来说,这可能是一个加号。
不隶属于 StackOverflow