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),constlet在进行同样的打印或者执行前,会检测变量是否已经声明,若未声明则会报错。

这样会很好的让我们养成变量未声明之前不允许使用的好习惯。

下面我们来说它们的具体使用场景(或是个人规范):

  • 尽量使用const来定义值
  • 如果值会发生改变,那么就使用let来定义
  • 尽量不要使用var来定义

上文中正确答案:b

本文系作者 @ 原创发布在 徐小鹏的个人分享博客。未经许可,禁止转载。

喜欢()
评论 (0)
21 文章
7 评论
1 喜欢
Top