區別: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其它相關文章!