ES6宣告(Let Const Var).
阿新 • • 發佈:2021-11-24
一、變數提升
A、用var宣告的變數,會在其作用域中發生變數提升,js預設給變數一個undefined值。
B、在ES6中使用let/const宣告的變數,不存在變數提升過程。也就是說,在使用let/const宣告的變數,宣告前訪問它,都會報錯。
1 { 2 var value=10; 3 let count=10; 4 } 5 console.log(value); //10 6 console.log(count); //引用錯誤
二、暫時死區
如果在let宣告前使用變數,這段區域被稱為"臨時死區"if (true) { // 死區開始 value = 10; console.log(value);// 死區結束 let value; }
三、重複宣告
A、let 和 const 命令宣告的變數不允許重複宣告;
B、而使用var宣告變數,可以多次重複宣告一個同名變數,但最終變數的值為最後一次宣告賦值的結果。
1 var a = 10; 2 var a = 'abc'; 3 var a = 'last value'; 4 console.log(a); // last value
四、作用域
在迴圈中 var會導致後續使用i 引起干擾 而 let 不會 防止干擾1 for (let i = 0; i < 10, i++) { 2 console.log(i); 3 }如果在迴圈體內設定函式方法,體外輸出var會得到不想要的值4 console.log(i); //var宣告 則10 ; let宣告 報錯
1 var list=[]; 2 for (var i = 0; i < 10; i++) { 3 list[i]=function(){ 4 console.log(i); 5 } 6 } 7 list[5](); //結果永遠是10解決方法 將var改為let
1 var list=[]; 2 for (let i = 0; i < 10; i++) { 3 list[i]=function(){4 console.log(i); 5 } 6 } 7 list[5]();
五、const常量
- 1 const宣告的作用是:建立一個只讀的常量,一旦宣告不可改變
- 2 和let宣告一樣,const宣告的常量無法提升,也存在臨時死區
- 3 和let不同的是,const聲明後必須賦值,否則會報錯
const PI=3.14; console.log(PI);