1.let声明的变量不存在预解析
2.let声明变量不允许重复(在同一个作用域内)
3.ES6引入块级作用域,块内定义的变量,在外部无法访问
if(true){
let flog = 123;
}
4.const用来声明常量,const声明的常量不允许重新赋值
const声明的常量必须初始化(赋值)
const实际上保证的,并不是变量的值不得改动,而是变量指向的那个内存地址所保存的数据不得改动。
ES6 声明变量的六种方法
ES5 只有两种声明变量的方法:var命令和function命令。
ES6 除了添加let和const命令,后面章节还会提到,
另外两种声明变量的方法:import命令和class命令。
所以,ES6 一共有 6 种声明变量的方法。
顶层对象,在浏览器环境指的是window对象,在 Node 指的是global对象。ES5 之中,顶层对象的属性与全局变量是等价的。
ES2020 在语言标准的层面,引入globalThis作为顶层对象。
也就是说,任何环境下,globalThis都是存在的,都可以从它拿到顶层对象,指向全局环境下的this。
垫片库global-this模拟了这个提案,可以在所有环境拿到globalThis。