let
1、let等同於var,但是注意:let定義的變量在代碼塊中有效,在代碼塊外面無效,而var定義的變量,在代碼塊內外都有效。
for(let i = 0; i< 10; i++){
console.log(i);
}
console.log(i);
這種情況外層循環是取不到i的值的。所以最後這個console.log彙報錯。
2、let定義變量不會變量提升。再let定義的變量之前去輸出這個變量,會報錯;但是如果var 定義的變量之前,去輸出了這個變量,會輸出undefined(未定義)。
3、暫時性死區。在代碼塊中,使用let定義變量之前,去賦值的話,會報錯。
4、不允許重複聲明 。如果使用let定義了同一個變量兩次,會報錯。
5、塊級作用域與函數聲明。
// 情況一
if (true) {
function f() {}
}
// 情況二
try {
function f() {}
} catch(e) {
// ...
}
這兩種情況都是不允許的。
const
定義常亮
const常亮一旦定義就不得更改。