UMD модуль JavaScript, который также работает в строгом режиме
У меня проблемы с переписыванием этого для работы в "строгом" режиме. Поскольку '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 {};
}));
1 ответ
Глядя на твой код, я вижу, что root
на самом деле используется только в том случае, если вы находитесь в браузере, что упрощает вещи.
Это означает, что мы можем заменить this
со следующим выражением:
typeof window !== "undefined" ? window : undefined
Это действует в строгом режиме (я пробовал в Node, он возвращает undefined
, без ошибок), и JSHint.com позволил это.
Если вам нужен глобальный объект и в других случаях, вы можете связать троичные выражения.