我正试图了解该关键字。但是问题出在节点环境上。我在Chrome Developer工具中得到了预期的行为,但是相同的代码在节点环境中无法正常工作。
当我们在全局上下文中创建var时,它应该位于全局(节点)或窗口(浏览器)内部,但是在节点环境中,它不会附加到文档中。
我只是测试简单的3行代码,这些代码在chrome中可以正常使用。
这是针对Node环境的
var color = 'red';
console.log(this.color);
console.log(global.color)
这是适用于浏览器的
var color = 'red';
console.log(this.color);
console.log(window.color)
对于节点环境,我收到未预期的未定义。
答案 0 :(得分:3)
这是软件开发规则:不要依赖粘贴在this
,global
或module
相关对象上的变量。范围可能会有所不同,并导致意外的行为和错误。使用明确的(this|global|module.exports).varName
绑定。
但是,如果您只是想了解节点中的工作原理,
this
的值设置为module.exports
(而不是global
)。global
的访问在各个模块中都是持久的,因此,如果您在模块中写入global.foo='foo'
,然后在bar.js
中要求它,则global.foo
将设置为{{1} 'foo'
中的}。 不建议在大多数情况下直接使用bar.js
-坚持使用global
和exports
。require
不应固守于var
:有一些例外情况(请参阅下文),但是编写代码时不应依赖于此< / li>
相关问题: