let變量聲明總結


let命令有四大主要特性:存在塊級作用域沒有變量提升暫時性死區不允許重復聲明

這都是和es5的var變量特性相反的。

 

1、存在塊級作用域

let命令聲明的變量只在其塊級作用域中有效,就是{}中。

{ let a = 10; var b = 1; } console.log(a); //出錯 not defined
console.log(b); //1

es5中要實現塊級作用域,通常借助立即執行匿名函數來實現:

(function(){ var a = 1; }()); console.log(a); //出錯,not defined

但是有了let之后,就像C語言一樣,直接就是:

{ let a = 1; } console.log(a); //出錯, not defined

 

2、沒有變量提升

也正因如此,變量必須在聲明后使用,否則會報錯。

console.log(a); //出錯, not defined
let a = 1; 

對比var經典的變量提升

console.log(a); //undefined
var a =1;

 

3、暫時性死區

在塊級作用域內,若存在用let命令聲明的變量,則所在區塊對該變量形成封閉作用域,也就是該變量無視外部的同名變量。而又因為不存在變量提升,所以在該區塊中,不能在聲明前使用該變量。

var a  = 1; if(true){ a = 2; //出錯 not defined
 let a; }

對比var

var a = 1; if(true){ a = 2; //var允許重復聲明,而且變量提升,故a=2正常賦值
var a; }

 

4、不允許重復調用

let不可以在相同作用域內重復聲明同一個變量,也包括不能和var,const變量名重復

let a = 1; let a = 1; //出錯 let不可重復聲明

var b = 1; let b = 1; //出錯 let不可重復聲明
 const c = 1; let c = 1; //出錯 let不可重復聲明

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM