Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 什么';这是';这';在Nodejs交互控制台和文件执行运行时之间?;_Javascript_Node.js - Fatal编程技术网

Javascript 什么';这是';这';在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 从脚本执行

在交互式nodejs控制台中:

> 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”是一个对象。变量不会以相同的方式添加到全局范围。为什么,我不知道。但这似乎正在发生