在使用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在初始化时必须赋值。创建到初始化的代码块就是暂时性死区。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。