2017-08-15 91 views
0

当我在Chrome开发工具中输入代码console.log(this);,它会显示:全球范围和Node.js的

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

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

{} 

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

(该代码仅被执行的事情,它不是一个程序的一部分。)

+0

这些都是窗口/浏览器方法。你为什么期望节点模块的全局环境看起来像这样? – Andy

+0

我不知道这个代码会被隐式地封装在一个'模块'中。谢谢。 – igobivo

回答

1

中的节点模块中的顶级代码,这相当于module.exports。这是你看到的空白物体。例如:

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

在浏览器中,而无需使用"use strict" -directive,指全局对象(窗口)。

+0

谢谢,我现在明白了。此外这个问题是现货:https://stackoverflow.com/questions/15406062/in-what-scope-are-module-variables-stored-in-node-js – igobivo