gpt4 book ai didi

javascript - var 不附加到全局

转载 作者:搜寻专家 更新时间:2023-10-31 23:14:46 25 4
gpt4 key购买 nike

我正在尝试理解这个关键字。但问题在于 Node 环境。我在 Chrome Developer 工具中得到了预期的行为,但相同的代码在 Node 环境中无法正常工作。

当我们在全局上下文中创建一个 var 时,它应该在全局( Node )或窗口(浏览器)中,但在 Node 环境中,它不会附加到文档。

我只是在测试一个简单的 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)

对于 Node 环境,我收到未定义的消息,这不是预期的。

最佳答案

这是一条软件开发规则:不要依赖于 thisglobalmodule 相关对象的变量。范围可能会有所不同并导致意外行为和错误。使用显式 (this|global|module.exports).varName 绑定(bind)。

但是如果你只是想了解 Node 中的工作原理:

  • 代码在执行时被包装到 IIFE 中,将 this 值设置为 module.exports(不是 global)。
  • global 的访问是跨模块持久的,因此如果您在模块中编写 global.foo='foo' 然后在 bar.js< 中需要它global.foo 将在 bar.js 中设置为 'foo'对于大多数用例,不鼓励直接使用 global - 坚持使用 exportsrequire
  • 根据 the specs , var 不应该让事情坚持 global:有一些异常(exception)(见下文),但在编写代码时你不应该依赖它

相关问题:

关于javascript - var 不附加到全局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57009684/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com