Node.js和javascript解释器不同?

Node.js和javascript解释器不同?,javascript,node.js,Javascript,Node.js,对于下面的代码,我在Javascript中得到了输出:窗口 但是对于Node.js,我得到了以下输出:未定义 我很困惑,Node.js是否使用javascript的差异解释器 在浏览器中,顶级作用域是全局作用域。也就是说 在浏览器中,如果您在全局范围var中,则会定义 全局变量 因此,在全局范围内,当您运行var name=“窗口”,与window.name=“该窗口”相同 在节点中,这是不同的。顶级范围不是全局范围 范围节点模块中的某个变量将是该模块的本地变量 模块 这就是您无法在nodejs

对于下面的代码,我在Javascript中得到了输出:窗口

但是对于Node.js,我得到了以下输出:未定义

我很困惑,Node.js是否使用javascript的差异解释器

在浏览器中,顶级作用域是全局作用域。也就是说 在浏览器中,如果您在全局范围var中,则会定义 全局变量

因此,在全局范围内,当您运行
var name=“窗口”
,与
window.name=“该窗口”相同

在节点中,这是不同的。顶级范围不是全局范围 范围节点模块中的某个变量将是该模块的本地变量 模块


这就是您无法在nodejs中获取
名称的原因。

指向发出呼叫的所有者。在您的示例中,由于使用了自执行函数
object.getNameFunc()()
,因此所有者是浏览器中的
窗口
对象


在node中,如果您在节点控制台中运行它,您将看到“窗口”,如果您使用命令
>node xxx.js运行脚本,您将看到
未定义的

您的意思是内部函数(返回此.name)的作用域是“全局的”,而不是“顶级的”?理解为模块是用另一个函数包装的,“top-level”是闭包作用域。根据我的理解,名称和函数在同一个模块中,因为它们在同一个文件中。
var name = "The Window";
var object = {
   name : "My Object",
       getNameFunc : function(){
         return function(){
           return this.name;
         };
       }
     };
console.log(object.getNameFunc()());