UMD javascript 模块也可以在严格模式下工作
UMD javascript module which also works in strict mode
我无法重写它以在 'strict' 模式下工作。由于 'this' 未明确定义,因此我在编译时遇到 jshint 错误。我在想我的大脑只是没有足够抽象地思考以找到创造性的解决方案。任何帮助,将不胜感激。代码改编自通用模块定义 Github repo:https://github.com/umdjs/umd/blob/master/returnExports.js
(function (root, factory) {
if (typeof define === 'function' && define.amd) {
// AMD Module
define([], factory);
} else if (typeof module === 'object' && module.exports) {
// Node Module
module.exports = factory();
} else {
// Browser Global
root.returnExports = factory();
}
}(this, function () {
return {};
}));
查看您的代码,我发现 root
仅在您使用浏览器的情况下实际使用,这简化了事情。
这意味着我们可以用下面的表达式替换this
:
typeof window !== "undefined" ? window : undefined
这在严格模式下是有效的(我在 Node 中试过了,它 returns undefined
,没有错误),并且 JSHint.com 允许它。
如果你在其他情况下也需要全局对象,你可以链接三元表达式。
我无法重写它以在 'strict' 模式下工作。由于 'this' 未明确定义,因此我在编译时遇到 jshint 错误。我在想我的大脑只是没有足够抽象地思考以找到创造性的解决方案。任何帮助,将不胜感激。代码改编自通用模块定义 Github repo:https://github.com/umdjs/umd/blob/master/returnExports.js
(function (root, factory) {
if (typeof define === 'function' && define.amd) {
// AMD Module
define([], factory);
} else if (typeof module === 'object' && module.exports) {
// Node Module
module.exports = factory();
} else {
// Browser Global
root.returnExports = factory();
}
}(this, function () {
return {};
}));
查看您的代码,我发现 root
仅在您使用浏览器的情况下实际使用,这简化了事情。
这意味着我们可以用下面的表达式替换this
:
typeof window !== "undefined" ? window : undefined
这在严格模式下是有效的(我在 Node 中试过了,它 returns undefined
,没有错误),并且 JSHint.com 允许它。
如果你在其他情况下也需要全局对象,你可以链接三元表达式。