前言
今天的文章啟發於六角學院的Js學徒特訓班第三十七關,除了var
宣告變數之外,我們也可以使用ES6的let
和const
let和const宣告
首先了解let和const都屬於用來宣告的,他們兩者最大差異是
- let: 用來宣告變數,可以被重新指定值
- const: 用來宣告常數(變數),不能重新指定值
所以當我們宣告的時候,就會寫成這樣
1 | let a='曉華'; |
使用const
宣告就不能改值了,會發生錯誤
const宣告物件和陣列
當你要宣告會改變值的時,下意識會認為那就使用let,這次我們使用const宣告物件和陣列試試看
1 | const arr=[]; |
會發現竟然沒出錯,這是因為JS中的陣列和物件都是屬於 Pass by reference,也就是我們所說的傳址,以上述範例來說它只是把數值放在同一個記憶體的位置,沒有指向其他地方,自然就不會產生錯誤了
這點物件也是同樣的
1 | const obj={ |
但要記住,一旦跟改位置,就不能使用const
方式宣告了
1 | const obj2={ |
最後放個範例
1 | const name = '小名'; |
可以看出來,用const
宣告的值為不可更改,若使用物件更改為同一個記憶體位置可以使用const
,若重新指向新的記憶體則依然使用let
參考文獻
對於 Pass by reference 可以參考以下文章
重新認識 JavaScript: Day 05 JavaScript 是「傳值」或「傳址」?
談談 JavaScript 中 by reference 和 by value 的重要觀念