我有以下代码:
var myModule = (function($) {
// Insert code here
} (jQuery || Zepto));
如果我没有在页面上引用jQuery,则脚本错误地说jQuery is undefined.
在代码中有很多次我会写var foo = missingObj || fallbackObj;
并且它工作正常。
我试图弄清楚a)为什么它在这种情况下不起作用b)因为我想使用这个使用任一框架的项目,所以会有什么替代方案。
答案 0 :(得分:4)
var foo = missingObj || fallbackObj;
仅在missingObj
未声明时才有效。例如。当missingObj
是一个值为undefined
的参数时,会发生这种情况(这是x = y || default的最常见用例)
您要查找的代码是
} (window.jQuery || window.Zepto));
所以基本上它不起作用的原因是因为你的混淆对象有一个值undefined
和未声明的对象。
访问jQuery
正在访问未声明的值,这不起作用。访问window.jQuery
正在访问未定义的值,该值确实有效。
例如
function jQuery(options) {
options = options || {};
...
}
可以使用,因为options
未定义而不是未声明