1

我无法重写它以在“严格”模式下工作。由于未明确定义“this”,因此我在编译时遇到 jshint 错误。我在想我的大脑只是不够抽象地思考,无法找到创造性的解决方案。任何帮助,将不胜感激。改编自通用模块定义 Github 存储库的代码: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 {};
}));
4

1 回答 1

1

查看您的代码,我发现它root仅在您使用浏览器的情况下实际使用,这简化了事情。

这意味着我们可以this用以下表达式替换:

typeof window !== "undefined" ? window : undefined

这在严格模式下有效(我在 Node 中尝试过,它返回undefined,没有错误),并且 JSHint.com 允许它。

如果您在其他情况下也需要全局对象,则可以链接三元表达式。

于 2015-08-14T15:01:33.737 回答