参考文档: let 和 const 命令 - ECMAScript6入门
注:文中代码仅作示意,复制运行时需要适当调整
(function fn() { //函数作用域开始 console.log(temp) //undefined //声明 var temp console.log(temp) //undefined //赋值 temp = 123 console.log(temp) //123 })() //在函数作用域外访问 console.log(temp) //ReferenceError: temp is not defined
通过 let 声明的变量没有变量提升、拥有暂时性死区,作用于块级作用域:
{ //函数作用域开始,TDZ开始 console.log(temp) //ReferenceError: temp is not defined //声明 let temp console.log(temp) //ReferenceError: Cannot access ‘temp‘ before initialization //赋值 temp = 345 //TDZ结束 console.log(temp) //345 //块级作用域结束 } //在块级作用域外访问 console.log(temp) //ReferenceError: temp is not defined
通过 const 声明的常量,需要在定义的时候就赋值,并且之后不能改变,暂时性死区与 let 类似。
{ //作用域开始,TDZ开始 console.log(temp) //ReferenceError: temp is not defined //声明并赋值 const temp = 789 //TDZ结束 console.log(temp) //789 //给常量赋值 temp = 987 //TypeError: Assignment to constant variable //作用域结束 } //在作用域外访问 console.log(temp) //ReferenceError: temp is not defined
ES6学习笔记01 -- 暂时性死区 ( temporal dead zone )
原文:https://www.cnblogs.com/duoge/p/11875921.html