let和const的區別是什麼

2020-12-24 15:00:53

區別:let宣告的變數可以改變,值和型別都可以改變;而const宣告的常數不可以改變,這意味著,const一旦宣告,就必須立即初始化,不能以後再賦值。

相關推薦:《》

let和const的不同點:

① let宣告的變數可以改變,值和型別都可以改變;const宣告的常數不可以改變,這意味著,const一旦宣告,就必須立即初始化,不能以後再賦值。

const i ; // 報錯,一旦宣告,就必須立即初始化
const j = 5;
j = 10; // 報錯,常數不可以改變

② 陣列和物件等複合型別的變數,變數名不指向資料,而是指向資料所在的地址。const只保證變數名指向的地址不變,並不保證該地址的資料不變,所以將一個複合型別的變數宣告為常數必須非常小心。

const arr = [];
// 報錯,[1,2,3]與[]不是同一個地址
arr = [1,2,3];
const arr = [];
// 不報錯,變數名arr指向的地址不變,只是資料改變
arr[0] = 1;
arr[1] = 2;
arr[2] = 3;
console.log(arr.length); // 輸出:3

若想讓定義的物件或陣列的資料也不能改變,可以使用object.freeze(arr)進行凍結。凍結指的是不能向這個物件或陣列新增新的屬性,不能修改已有屬性的值,不能刪除已有屬性。

const arr = [];
Object.freeze(arr);
// 不報錯,但資料改變無效
arr[0] = 1;
arr[1] = 2;
arr[2] = 3;
console.log(arr.length); // 輸出:0

let和const的相同點:

① 只在宣告所在的塊級作用域內有效。

② 不提升,同時存在暫時性死區,只能在宣告的位置後面使用。

③ 不可重複宣告。

更多程式設計相關知識,請存取:!!

以上就是let和const的區別是什麼的詳細內容,更多請關注TW511.COM其它相關文章!