参考文档: let 和 const 命令 - ECMAScript6入门 html
注:文中代码仅做示意,复制运行时须要适当调整segmentfault
(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 相似。post
{ //做用域开始,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