Javascript 什么';这是';这';在Nodejs交互控制台和文件执行运行时之间?;
在交互式nodejs控制台中:Javascript 什么';这是';这';在Nodejs交互控制台和文件执行运行时之间?;,javascript,node.js,Javascript,Node.js,在交互式nodejs控制台中: > var a = 1; > console.log(a); 1 > console.log(this.a); 1 所以我想 a === this.a 但当我将其保存在JS文件中并执行时,会得到不同的响应: 1 undefined 为什么这个.a现在没有定义?当您从控制台执行节点时,“这个”指的是控制台的全局范围。所以“a”会自动添加到全局变量中,就像在浏览器中以类似的方式声明变量会将“a”添加到窗口中一样,即window.a 从脚本执行
> var a = 1;
> console.log(a);
1
> console.log(this.a);
1
所以我想
a === this.a
但当我将其保存在JS文件中并执行时,会得到不同的响应:
1
undefined
为什么
这个.a
现在没有定义?当您从控制台执行节点时,“这个”指的是控制台的全局范围。所以“a”会自动添加到全局变量中,就像在浏览器中以类似的方式声明变量会将“a”添加到窗口中一样,即window.a
从脚本执行时,“this”是一个对象。变量不会以相同的方式添加到全局范围。为什么,我不知道。但这似乎是正在发生的事情。当您从控制台执行节点时,“this”指的是控制台的全局范围。所以“a”会自动添加到全局变量中,就像在浏览器中以类似的方式声明变量会将“a”添加到窗口中一样,即window.a 从脚本执行时,“this”是一个对象。变量不会以相同的方式添加到全局范围。为什么,我不知道。但这似乎正在发生