ES
ES6是 JavaScript的最新标准 旧标准为ES5 可以使用Babel 转码器转码为旧标准用法的环境
变量
var全局变量 let局部变量 (同区块内可用) const只读常量
- 变量提升:
var声明在使用后边,会自动提升,既编译时就定义为undefined在var赋值后再为对应值;let不存在变量提升,在使用之后定义会直接报错。
变量的区块
- 每一对
{}内,都算一个区块,在区块中声明的变量,不会影响外部的区块。 - 区块之间可以嵌套
顶层对象
JavaScript 语言存在一个顶层对象,它提供全局环境(即全局作用域),所有代码都是在这个环境中运行。但是,顶层对象在各种实现里面是不统一的。
浏览器里面,顶层对象是window,但Node和Web Worker没有window。浏览器和Web Worker里面,self也指向顶层对象,但是Node没有self。Node里面,顶层对象是global,但其他环境都不支持。
var a = 1;
// 如果在 Node 的 REPL 环境,可以写成 global.a
// 或者采用通用方法,写成 this.a
window.a // 1
let b = 1;
window.b // undefined
ES2020在语言标准的层面,引入globalThis作为顶层对象。也就是说,任何环境下,globalThis都是存在的,都可以从它拿到顶层对象,指向全局环境下的this。
可以直接使用globalThis.a获取到变量a的值。
