参考文档:
暂时性死区(temporal dead zone)
理解ES6中的TDZ(暂时性死区)ES6 中 let 暂时性死区详解
注:文中代码仅作示意,复制运行时需要适当调整
ES6 规定,如果代码区块中存在 let 和 const 命令声明的变量,这个区块对这些变量从一开始就形成了封闭作用域,直到声明语句完成,这些变量才能被访问(获取或设置),否则会报错ReferenceError。这在语法上称为“暂时性死区”(英temporal dead zone,简 TDZ),即代码块开始到变量声明语句完成之间的区域。