在使用let/const定义变量时,一开始就会形成封闭作用域,在声明变量之前是无法使用该变量的。这个特点是为了弥补var的缺陷。

if(true){
    name = ‘123’   name is not defined
    let name = ‘456’
}

解析原理:

其实let/cosnt和var一样都会有提升的效果,不同的是:
  • var 在创建时就会被初始化,赋值为undefined

  • let/const在进入到块级作用域时,因为提升的原因会先被创建,但不会被初始化。直到使用let/const定义时,才会被初始化。let初始化没有赋值会被默认undefined;const在初始化时必须赋值。创建到初始化的代码块就是暂时性死区。

Yang
17 声望0 粉丝