Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Can jQuery';s$会干扰其他图书馆吗?_Jquery_Javascript_Javascript Framework - Fatal编程技术网

Can jQuery';s$会干扰其他图书馆吗?

Can jQuery';s$会干扰其他图书馆吗?,jquery,javascript,javascript-framework,Jquery,Javascript,Javascript Framework,我了解到,如果这样做,可以避免与使用$符号的其他库发生冲突 (function($) { // jQuery code })(jQuery) 有人能给我解释一下吗?您使用名为$的参数定义了一个匿名函数。然后立即使用jQuery对象调用它(其名称很可能非常明确,不会与其他库对象的名称冲突) 因此,在匿名函数的范围内(所有jQuery代码都将在其中),$将引用jQuery对象。因此,每个人都很高兴:您的代码可以使用方便的速记$,以后的代码可以将$用于自己的业务。其他库可以将$用于其他目的

我了解到,如果这样做,可以避免与使用
$
符号的其他库发生冲突

(function($) {
  // jQuery code  
})(jQuery)

有人能给我解释一下吗?

您使用名为
$
的参数定义了一个匿名函数。然后立即使用
jQuery
对象调用它(其名称很可能非常明确,不会与其他库对象的名称冲突)


因此,在匿名函数的范围内(所有jQuery代码都将在其中),
$
将引用
jQuery
对象。因此,每个人都很高兴:您的代码可以使用方便的速记
$
,以后的代码可以将
$
用于自己的业务。

其他库可以将
$
用于其他目的

你还是应该打电话

jQuery.noConflict();

您可以在这里阅读更多内容:

$
表示jQuery对象。其他库也使用
$
来表示它们的对象。因此,如果加载jQuery插件,它可能会尝试更改错误的
$
对象


您可以使用
jQuery.noConflict()
来规避此问题:

是的,使用
$
可能会干扰其他库(例如Prototype)

您的代码段定义了一个立即函数,然后调用它,并将
jQuery
作为参数传递。(
jQuery
是jQuery的顶级对象,当没有冲突时,
$
也是如此。)

jQuery
绑定到函数的
$
参数。JavaScript函数创建自己的作用域,因此函数参数(和局部变量,用
var
声明)将“覆盖”具有相同名称的任何全局变量

函数将“查看”的
$
的唯一值是绑定到
jQuery
的参数,确保函数期间没有冲突。

您还必须使用

通常,当您使用jQuery时,它会定义一个名为
$
的全局函数。jQuery还记得前面的
$
,就像另一个库定义的全局
$
函数一样

当您调用
noconflict
时,jQuery将恢复
$
的上一个(记住的)值。但是现在您不能使用
$
来使用jQuery–您只能使用函数名
jQuery
,但这更为详细。这就是你在问题中提到的代码

该代码允许您使用
$
在您定义的匿名函数的范围内调用jQuery,而不需要它替换全局
$
的值。函数为其局部变量和参数创建单独的作用域或命名空间。您发布的代码相当于:

function init() {
    var $ = window.jQuery;
    // do stuff with $
}
init();
将初始化函数注册为在DOM就绪时调用的回调函数的常用快捷方式是将其作为参数传递给
$

$(function() {
    // code
});
为了避免在需要防止库冲突时嵌套两个匿名函数,jQuery函数将自身作为参数传递到此回调,因此可以执行以下操作:

jQuery(function($) {
    // $ is jQuery here
});