基礎(chǔ)點
let和const 都是只在聲明所在的塊級作用域內(nèi)有效
-
let聲明的變量可以改變冷溶,值和類型都可以改變渐白,沒有限制
{ let a = 10; var b = 1; } a // 報錯,ReferenceError: a is not defined. b // 1
-
const聲明只讀的常量并且必須立即初始化
const PI = 3.1415; PI // 3.1415 PI = 3; // 報錯逞频,TypeError: "PI" is read-only.
ES5中var只有全局作用域和函數(shù)作用域
不存在變量提升
let和const不像var那樣會發(fā)生“變量提升”現(xiàn)象纯衍。所以,變量一定要在聲明后使用苗胀,否則報錯
-
命令聲明變量之前襟诸,該變量都是不可用的
console.log(foo); // 輸出undefined console.log(bar); // 報錯,ReferenceError: bar is not defined. var foo = 2; let bar = 2;
不允許重復(fù)聲明
let和const不允許在相同作用域內(nèi)基协,重復(fù)聲明同一個變量
-
定義在不同作用域的同名變量互不干擾
// 報錯歌亲,TypeError: Duplicate declaration "a". function test() { let a = 10; var a = 1; } // 報錯,TypeError: Duplicate declaration "a". function test() { let a = 10; let a = 1; }