暂时性死区
只要块级作用域内 存在let命令,它所声明的变量就会“绑定”这个区域,不在手外部的影响。
如果区块中存在let和const命令,这个区块对这些命令声明的变量,从一开始就形成封闭作用域。
凡是在声明之前就使用这些变量,就会报错。 这就是暂时性死区
暂时性死区的场景
var a=a; //不报错 因为var可以变量提升 ,在等号赋值的时候是从右往左//使用变量a,此时a是undefined,赋值的是undefined
let a=a;//报错 赋值运算是从右往左,右边使用变量a结果发现a没有声明 ,而let语法规定不能再没定义之前使用变量,所以报错