这是我的一位同事在编写javascript时使用的一段代码。 “与其他图书馆没有冲突”的观点是否可以通过这种方式获益?
jQuery((function($) {
return function () {
// code here
};
}(jQuery)));
答案 0 :(得分:3)
这实际上是self-executing anonymous function pattern
的组合(function(window, document, $, undefined){
...
}(window, document, jQuery));
和document.ready
的jQuery简写:
jQuery(function($){
...
});
为了获得您可以做的所有优势:
jQuery(
(function(window, document, $, undefined) {
...
}(window, document, jQuery);
));
这样做的好处是:
typeof(undefined) === 'undefined'
$
被其他脚本篡改的独立性domready
解雇window
> w
答案 1 :(得分:1)
是的,它不会与其他图书馆发生冲突。
答案 2 :(得分:1)
是的,当其他图书馆覆盖它时,它允许您继续使用$
。但是,您的样本有点过于复杂;它可以简化为:
jQuery(function($){
// code here
});
或
jQuery(document).ready(function($){
// code here
});
不会失去任何好处。
答案 3 :(得分:0)
他正在使用jQuery的$.noConflict()
模式,就像jQuery那样为其他库释放$,更多信息here。
通常您不需要这样做,除非您使用的是与jQuery冲突的其他库。它还可以用于加载2个不同版本的jQuery。
答案 4 :(得分:0)
这实际上不是“onload”函数,而是“onready”函数。
但是如果你的意思是使用jQuery而不是$,那么好处肯定是为了防止冲突。
编辑:
我认为您可能输错了代码。你想要的是
(function($) {
$(function() {
// code here
});
})(jQuery);
这会创建一个匿名函数,其中$作为参数传入,以便任何其他全局$不会发生冲突。然后它调用传递jQuery的匿名函数作为$参数。