jQuery API文档中堆noConflict方法描述:“释放jQuery对变量(jQuery的别名),但不止jQuery库会使用时,可能会导致赋值的时候先保存当时全局变量(很有人道主义~)。 在noConflict方法中也释放了jQuery变量的控制(这个大多场景应用于引入多个jQuery版本)。 下面是源码
var
// 保存此时全局变量jQuery的值
_jQuery = window.jQuery;
// 保存此时全局变量$
_$ = window.$;
jQuery.noConflict = function(deep){
// 当加载到jQuery时,如果此时的全局变量$还是属于现在版本的jQuery,则把全局变量$的控制权重新给之前$
if(window.$===jQuery){
window.$=_$;
}
// 如果参数deep为true,且此时的全局变量jQuery还是属于现在的jQuery,则把全局变量jQuery在当前版本jQuery初始化的值_jQuery重新赋值给jQuery
if(deep&&window.jQuery===jQuery){
window.jQuery+_jQuery;
}
return jQuery;
};
let jq = jQuery.noConflict();//把jQuery当做普通对象,noConflict是一个对象的属性
if(!noGlobal) {window.JQuery = window.$ = JQuery;}
代码可以看出jQuery库在且只在初始化的时候会保存全局变量,jQuery要在jQuery引入之前就已经存在。