【问题标题】:global scope in chrome and node.jschrome 和 node.js 中的全局范围
【发布时间】:2017-08-15 22:09:09
【问题描述】:

当我在 Chrome 开发工具中输入代码 console.log(this); 时,它会显示:

Window {stop: function, open: function, alert: function, confirm: function, prompt: function…}

但是当我在 node.js (v6.11.1) 中执行相同的代码时,它会显示:

{}

它不应该显示有关全局对象的信息吗?

(所述代码只是被执行的东西,它不是程序的一部分。)

【问题讨论】:

  • 这些都是窗口/浏览器方法。为什么你会期望节点模块的全局环境看起来像这样?
  • 我不知道这段代码会被隐式封装在一个“模块”中。谢谢。

标签: javascript node.js google-chrome-devtools


【解决方案1】:

在 Node 模块的顶层代码中,this 等价于 module.exports。那就是你看到的空物体。例如:

module.exports.a = 'test';
console.log(this); // 'test'

在浏览器中,不使用"use strict"-directive,this指的是全局对象(Window)。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-29
  • 1970-01-01
相关资源
最近更新 更多