暂时性死区

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

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理