顶层对象属性
全局对象
ES5 之中,顶层对象的属性与全局变量是等价的。
- 在浏览器环境指的是window对象(或者self)。
- 在 Node 指的是global对象。
- Web Worker 里面,self也指向顶层对象。
globalThis
ES2020 在语言标准的层面,引入globalThis作为顶层对象。 任何环境下,globalThis都是存在的,都可以从它拿到顶层对象,指向全局环境下的this。垫片库global-this模拟了这个提案,可以在所有环境拿到globalThis(低版本向上兼容)。
申明变量的
ES6中为了保持兼容性
- var命令和function命令声明的全局变量,依旧是顶层对象的属性(保持变量提升的特性)。
- let命令、const命令、class命令声明的全局变量,不属于顶层对象的属性(从 ES6 开始,全局变量将逐步与顶层对象的属性脱钩)。