node和crome浏览器中使用的javascript引擎有什么区别吗?

node和crome浏览器中使用的javascript引擎有什么区别吗?,javascript,node.js,Javascript,Node.js,我在crome broswer控制台和thru节点引擎中运行了以下代码,得到了不同的结果 代码: function foo() { console.log(this.a); } var a = 10; foo(); Crome浏览器中的输出:10 当我把上面的代码保存在main.js文件中时,运行下面的命令 node main.js 输出:未定义这是浏览器中窗口对象的范围。NodeJS没有窗口对象,它有一个不同的全局对象。所以VarA=10被提升,这个.a访问它 如果在函数中使用c

我在crome broswer控制台和thru节点引擎中运行了以下代码,得到了不同的结果

代码:

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

var a = 10;

foo();
Crome浏览器中的输出:10

当我把上面的代码保存在main.js文件中时,运行下面的命令

node main.js

输出:未定义

这是浏览器中窗口对象的范围。NodeJS没有窗口对象,它有一个不同的全局对象。所以VarA=10被提升,这个.a访问它

如果在函数中使用console.logthis,您将看到:

Window {stop: function, open: function, alert: function, confirm: function, prompt: function…}
这不是foo的范围,而是window的范围

请注意,如果您在foo内部声明了this.a,您的结果将不同

function foo() {
    this.a = 4;
    console.log(this.a); //now logs 4 instead of 10
}