【发布时间】:2019-11-14 03:31:18
【问题描述】:
我正在关注有关this 和execution context 的教程。我观察到这段代码在 Chrome 控制台中正确执行:
var globalThis = this
function myFunc () {
console.log('globalThis: ', globalThis)
console.log('this inside: ', this)
console.log(globalThis === this)
}
myFunc()
// globalThis: Window {...}
// this inside: Window {...}
// true
但是,当我尝试在节点环境中执行相同的代码时,我得到以下响应:
globalThis: {}
this inside: { console: [Getter],
global: [Circular],
process:
process {
title: 'node',
version: 'v8.16.2',
...
false
我知道全局节点this的值应该和浏览器javascript的this值不同,但问题是,为什么myFunc's this的值不等于全局值?
【问题讨论】:
-
当我在 Node 中运行你的代码时,我得到
true,它们是一样的 -
很有趣,知道为什么它会为我返回
false吗? -
我得到了错误 - 所以它可能取决于节点的版本(在 13.x 上为错误)......或者你如何运行它......如果以 repl 运行,我得到真实......并且当
'use strict'; -
我使用的是 v12.13.0。
globalThis是一个空对象听起来很奇怪,它是从任何东西继承的吗? -
使用
var globalThis = global再次不同
标签: javascript node.js executioncontext