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 模块的全局范围内定义变量时,它将是该模块的本地变量。
节点:
浏览器:
我已经在 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 模块的全局范围内定义变量时,它将是该模块的本地变量。
节点:
浏览器: