- 暂时性死区:在ES6之前,使用
typeof
运算符操作一个未声明的变量时,不会报错,该变量的值以undefined
作处理。而在ES6之后,使用ES6的变量声明方法(let
,const
,class
…)声明的变量,不可在声明前使用typeof
操作,否则会进行显式报错。ES6变量声明前的代码区域,称为 “暂时性死区”
-
ES6之前
console.log(typeof a); // undefined (a没有使用var或function声明,但 no error)
-
ES6之后的变量声明(会进行显式报错)
/* 暂时性死区--start */ console.log(typeof a); // Uncaught ReferenceError: a is not defined /* 暂时性死区--end */ let a;