我不小心用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.exportsthis与全局上下文中的相同。
- 那是新的吗?
- 那是规格的一部分吗?
- 这不是让创建在导入或需要时可以使用的文件变得非常容易吗?
- 如果这行得通,为什么我们还要进行整个检查
typeof require === 'undefined'?- 多年来我一直没有注意到这么重要的事情吗?