node和crome浏览器中使用的javascript引擎有什么区别吗?
我在crome broswer控制台和thru节点引擎中运行了以下代码,得到了不同的结果 代码: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
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
}