为什么我从REPL获得了console.log(this)的不同结果

时间:2017-02-17 02:08:15

标签: node.js

//test.js
console.log(this);

通过命令' node test.js '执行test.js,得到' {} '的结果。但是通过在REPL中执行相同的代码,我获得了大量的系统信息。为何如此区别?是因为我配置了Node?

1 个答案:

答案 0 :(得分:2)

不同的执行上下文。

在节点中,您需要的任何文件都是具有自己作用域的模块,默认情况下为空对象(因此为{}),直到您导出内容为止。

另一方面,repl是它自己的执行上下文,其中已经附加了一堆东西。您甚至可以自行设置附加功能(例如便捷功能)