无法将依赖对象传递给Javascript模块

时间:2012-02-29 17:58:38

标签: javascript ecmascript-5

我有以下代码:

var myModule = (function($) {
  // Insert code here
} (jQuery || Zepto));

如果我没有在页面上引用jQuery,则脚本错误地说jQuery is undefined.在代码中有很多次我会写var foo = missingObj || fallbackObj;并且它工作正常。

我试图弄清楚a)为什么它在这种情况下不起作用b)因为我想使用这个使用任一框架的项目,所以会有什么替代方案。

1 个答案:

答案 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未定义而不是未声明