关于jQuery中$.noConflict() 实现的疑问

问题描述

jQuery中为了防止冲突(比如多个库都使用$符号作为函数或者变量名),我们可以使用 jQuery.noConflict 方法来实现$和jQuery控制权的移交。

内部实现如下
开头首先做的一件事是缓存window下的$和jQuery变量

         // Map over jQuery in case of overwrite
        _jQuery = window.jQuery, 

        // Map over the $ in case of overwrite
        _$ = window.$,

然后在noConflict中

noConflict: function( deep ) {
                if ( window.$ === jQuery ) {//为什么要经过这次判断,window.$===jQuery不是恒为真么
                        window.$ = _$;
                }

                if ( deep && window.jQuery === jQuery ) {
                        window.jQuery = _jQuery;
                }

                return jQuery;
        }

疑问:

  1. if ( window.$ === jQuery ) 为什么要经过这次判断,window.$===jQuery不是恒为真么?

  2. 亦或在什么情况下以上判断不为真?

阅读 2.1k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进