暂时性死区

70 阅读1分钟

ES6明确规定,如果区块中存在let和const命令,这个区块对这些命令声明的变量或常量,从一开始就形成了封闭作用域。凡是在声明之前就使用这些变量或常量,就会报错。总之,在代码块内,使用let命令声明变量之前,该变量都是不可用的。这在语法上,称为“暂时性死区”。

示例:

只要块级作用域内存在let/const命令,它所声明的变量、常量就自动“绑定”这个区域,不再受外部的影响,由于let和const的这个特性相同,所以这里以let为例,如下:

 let a = 1;

{

console.log(a);

let a = 2;

}

上面这段代码中,存在全局变量a,但是在块级作用域内使用let声明了一个局部变量a,局部变量绑定了这个块级作用域,所以在let声明变量前,使用a会报错,参考如下:

417.png

ES6规定暂时性死区和let、const语句不出现变量提升,主要是为了规范代码书写,减少运行时错误,防止在变量声明前就使用这个变量,从而导致意料之外的行为。暂时性死区的本质就是,只要一进入当前作用域,所要使用的变量就已经存在了,但是不可获取,只有等到声明变量的那一行代码执行过后,才可以获取和使用该变量也就是先声明,再使用。

今日份寄语:

人生有时候需要勇敢一下,勇敢去爱,勇敢去恨,然后,勇敢忘记,勇敢向前。