这个值是在 jQuery 暴露于全局范围之前设置的:
_jQuery = window.jQuery,
在 IIFE 快结束时,在上述声明之后有
window.jQuery = window.$ = jQuery;
这是来自jQuery 开发源。
什么编译器机制允许 jQuery 从未设置的变量中进行赋值。
另外,一般来说 _jQuery 是干什么用的?
这个值是在 jQuery 暴露于全局范围之前设置的:
_jQuery = window.jQuery,
在 IIFE 快结束时,在上述声明之后有
window.jQuery = window.$ = jQuery;
这是来自jQuery 开发源。
什么编译器机制允许 jQuery 从未设置的变量中进行赋值。
另外,一般来说 _jQuery 是干什么用的?
正如评论所说,_jQuery
支持全局范围内已经存在的任何内容(如旧版本的 jQuery)。这可能是为了jQuery.noConflict
功能。
这是 jQuery 促进其 noConflict 功能的一种方式。它正在存储先前设置的任何内容的副本,window.jQuery
以便以后可以在必要时恢复它。
那部分代码是为使用该$.noConflict()
方法做准备。window.jQuery
要么是一个现有的 jQuery 库,在包含被初始化的库之前就已经存在,要么就是undefined
. 这两种情况都不应该引起问题。
答案在代码中:
// Map over jQuery in case of overwrite
window.jQuery 和 window.$ 的先前值是为 noConflict 功能保存的。