參考文檔: 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