繁体   English   中英

相同的代码,但 VS Code 和浏览器控制台的“this”的 output 不同

[英]Same code but different output of 'this' for VS Code and browser console

我在 VS Code 和浏览器控制台中都执行了以下代码

 var message = 'I am your teacher' function executeWorkshop(greeting){ return function ask(){ console.log(`${greeting}, ${this.message}`); } } executeWorkshop("Hi")();

产出

VS代码:

Hi, undefined

浏览器:

Hi, I am your teacher

对于web浏览器,我们有一个window object。它提供了浏览器window的功能,同时也起到了全局object的作用。当脚本在web浏览器中创建全局变量时,它们被创建为global(object)window的成员.

在Node.js,不是这样的。 NodeJs 有一个叫做global object 的东西。

以下是一些事实:

  • 在 Node.js 模块系统中,每个文件都被视为一个单独的模块。
  • 全局对象在所有模块中都可用。
  • 在浏览器中,全局 scope 是 window object,在 nodeJS 中,模块的全局 scope 是模块本身,因此当您在 Node.js 的全局 scope 中定义变量时,它将是该模块的本地变量。

节点: 在 NodeJs 上

浏览器: 在浏览器上

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM