Nodejs交互式控制台和文件执行运行时间之间有什么区别?

在交互式nodejs控制台中:

> var a = 1; > console.log(a); 1 > console.log(this.a); 1 

所以我认为

 a === this.a 

但是当我把它保存在一个JS文件中并执行它时,我得到了不同的回应:

 1 undefined 

为什么this.a现在是不确定的?

当您从控制台执行节点时,“this”是指控制台的全局范围。 所以'a'自动被添加到全局,就像在浏览器中以类似的方式声明一个variables将添加'a'到窗口,即window.a

从脚本执行时,“this”是一个对象。 variables不以相同的方式添加到全局范围。 为什么,我不知道。 但是这似乎正在发生。