Я случайно использовал require()
на модуле javascript, предназначенном для использования с браузером. Модуль установлен this['libraryName'] = ...
. Я заметил, что это на самом деле работает .
Итак, я создал 2 файла:
test1.js
console.log( require('./test2.js'))
test2.js
console.log(this === module.exports)
this.SOMETHING = 10
Результат?
$ node ./test1.js
true
{ SOMETHING: 10 }
$
Я этого не ожидал! Это true
означает, что module.exports - это ЖЕ, как this
в глобальном контексте.
- Это новое?
- Это часть спецификации?
- Разве это не облегчает создание файлов, которые будут работать, если они будут импортированы ИЛИ требуются?
- Если это работает, почему мы все еще выполняем всю проверку
typeof require === 'undefined'
? - Я не замечал чего-то такого важного в течение лет ?