VS Code 和浏览器控制台的代码相同但 'this' 的输出不同

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

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

在Node.js中,情况并非如此。 NodeJs 有一个叫做 global object.

的东西

以下是一些事实:

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

节点:

浏览器: