ES6 lesson 4 – let、const 的临时性死区及场景推荐
上几节中已经基本上了解了var、let、const的基本使用。本节我们首先来说一下let和const的临时性死区的特性和使用场景推荐(并不是规范)。
console.log(i) var i = 'string'
a. 报错
b. undefined
c. ‘string’
正确答案在文章尾部
为什么会这样呢,这是因为变量存在一个变量提升
的特性。
实际上这段代码执行的顺序是先声明一个未赋值的i变量,然后再打印i,最后才执行到定义i的值。
那么这样子的执行顺序就会出现很多奇怪的情况。
为了避免出现这样的情况,就应该使用let
或者const
。
console.log(i) let i = 'string' // 报错
实际上let和const也是存在变量提升的,但是它们存在一个临时性死区
的特性(Temporal Dead Zone),const
和let
在进行同样的打印或者执行前,会检测变量是否已经声明,若未声明则会报错。
这样会很好的让我们养成变量未声明之前不允许使用的好习惯。
下面我们来说它们的具体使用场景(或是个人规范):
- 尽量使用const来定义值
- 如果值会发生改变,那么就使用let来定义
- 尽量不要使用var来定义
上文中正确答案:b
本文系作者 @feacx 原创发布在 徐小鹏的个人分享。未经许可,禁止转载。