在使用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在初始化时必须赋值。创建到初始化的代码块就是暂时性死区。