在查看Twitter Bootstrap Javascript中编写的一些代码时,它们似乎立即调用了以下匿名函数:
!function( $ ) {
...
}(window.jQuery || window.ender);我传统上看到同样的事情是这样完成的:
(function($) {
...
})(window.jQuery || window.ender);第一种方式似乎有点麻烦,我不确定这样做是否有什么好处或理由,而不是第二种方式?注意到我理解它的工作原理,我想了解为什么他们选择这样做。
发布于 2011-11-29 04:41:30
,
!应该处理其他JavaScript代码在此之前连接的位置,并且没有尾随的分号.没有太大的差别。我会用你用得更舒服的东西。你应该在你的例子开始时抛出一些东西来避免.
base.js
var lol = function() {
alert(arguments[0]);
}im-concat-to-base.js
(function() {
// Irrelevant.
})();jsFiddle。
加入一个领先的;她就会工作..。
jsFiddle。
...or !就像推特的启动带.
jsFiddle。
发布于 2011-11-29 04:41:01
它们都是克服语法歧义的方法。两者都不比另一个更“无趣”。只是风格上的选择。
你也可以这样做:
0 + function( $ ) {
// ...
} ( window.jQuery || window.ender );或者:
parseInt(function( $ ) {
// ...
} ( window.jQuery || window.ender ) );发布于 2013-04-25 01:55:34
与!undefined的评估步骤不同,您还可以使用void运算符来消除歧义:
void function($) {
...
}(window.jQuery || window.ender);对它有一种C性质;-)
https://stackoverflow.com/questions/8305915
复制相似问题