Node.js和javascript解释器有什么不同?

时间:2013-08-30 05:03:56

标签: javascript node.js

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

var name = "The Window";
var object = {
   name : "My Object",
       getNameFunc : function(){
         return function(){
           return this.name;
         };
       }
     };
console.log(object.getNameFunc()());

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

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

2 个答案:

答案 0 :(得分:4)

  

在浏览器中,顶级范围是全局范围。这意味着   在浏览器中,如果你在全局范围内var会定义一个   全局变量。

因此,在全局范围内,当您运行var name = "The Window";时,它与window.name = "The window";相同。

  

在Node中,这是不同的。顶级范围不是全球性的   范围; Node模块内部的var内容将是本地的   模块。

这就是你无法在nodejs中获得name的原因。

答案 1 :(得分:0)

this指向拨打电话的所有者。在您的示例中,由于您使用了自执行函数object.getNameFunc()(),因此所有者是浏览器中的window对象。

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