Node.js 节点[file.js]使用运行浏览器和nodejs.editor生成不同的结果

Node.js 节点[file.js]使用运行浏览器和nodejs.editor生成不同的结果,node.js,command-line,Node.js,Command Line,我在test.js文件中有下面一段代码 function foo(){ console.log(this.bar); } var bar = "bar1"; var obj = {bar: "bar2"}; foo(); foo.call(obj); 当我运行node test.js时,我得到了结果 undefined bar2 bar1 bar2 当我在node.editor中运行时,我得到了结果 undefined b

我在test.js文件中有下面一段代码

   function foo(){
      console.log(this.bar);
    }

    var bar = "bar1";
    var obj = {bar: "bar2"};

    foo();
    foo.call(obj);
当我运行node test.js时,我得到了结果

undefined 
bar2
bar1 
bar2
当我在node.editor中运行时,我得到了结果

undefined 
bar2
bar1 
bar2
我认为第二个结果是对的,但第一个方法有什么问题?因为我总是走第一条路


它们之间有什么区别

我认为当使用'node test.js'时,node会为test.js代码创建一个包装器,因此没有全局变量栏


在.edit方式下,全局范围中定义了一个变量栏。

简单来说,当您使用
节点test.js运行代码时,节点js将
要求('test.js')
运行它。但是当您使用REPL模式时,您输入的代码将直接在REPL中执行


使用
require
时,
test.js
上的变量不会绑定为全局变量。所以不能像
这样访问.bar

你所说的
节点编辑器是什么意思,是REPL模式吗?是的,在REPL中键入“.editor”这是你的答案,