ES6筆記-let和var的區別
阿新 • • 發佈:2018-11-11
let基本用法
ES6新增了let命令,用來宣告變數,用法類似於var,但它所宣告的變數,只在let命令所在的程式碼塊內有效。
{
let a = 10;
var b = 20;
}
console.log(a) // Error
console.log(b) // 20
對於for迴圈的計數器,就很適合使用let命令。
for (let i = 0; i < 10; i++) {
// ...
}
console.log(i); // Error
上面程式碼中的計數器i只在for迴圈體內有效,如果在迴圈體外引用就會報錯。
let不存在“變數提升”
按照通常邏輯,變數只有在宣告之後才能使用。但var命令會發生“變數提升”現象,即變數可以在宣告之前使用,值為undefined,這很容易產生錯誤。例如:
// var
console.log(a) // 輸出undefined
var a = 100;
// let
console.log(b); // Error
let b = 200;
ES6規定暫時性死區和let、const語句不出現變數提升,主要是為了防止在變數宣告前就使用這個變數,導致意料之外的行為。這種錯誤在ES5是很常見的,現在有了這種規定,避免此類錯誤就很容易了。
let的這種設計就是為了讓大家養成良好的程式設計習慣,變數一定要在宣告之後使用,否則會報錯。
let不允許重複宣告變數
let不允許在相同作用域內,重複宣告同一個變數
// 錯誤 function func() { let a = 10; let a = 20; }