1、let 和 const命令
let 和 const 声明的变量也会存在变量提升,但与var不同,初始化没有被提升。 在我们声明(初始化)它们之前,它们是不可访问的。 这被称为“暂时死区”。 当我们在声明变量之前尝试访问变量时,JavaScript会抛出一个ReferenceError。
变量的赋值可以分为三个阶段:
1、创建变量,在内存中开辟空间
2、初始化变量,将变量初始化为undefined
3、真正赋值
let 的「创建」过程被提升了,但是初始化没有提升。
var 的「创建」和「初始化」都被提升了。
function 的「创建」「初始化」和「赋值」都被提升了。
2、解构
let [a, b, c] = [1, 2, 3];
// a = 1
// b = 2
// c = 3