About Const In JavaScript

關於 Const 真的不能改變嗎?

Nono's Note
Oct 11, 2022

前言

我想大家都很熟悉 JavaScript 中 var / let / const 之間的差異,順手紀錄一下關於 Const 的筆記

1. var :

在ES6以前,是沒有所謂「區塊概念(Block)」,一切都是用 var 來宣告變數,而 var 為全局作用域(全域變數)或是函式作用域(局部變數),也就是說如果不在函式宣告的話,是可以在任何地方做取用。

可以看到上圖,如果想在function外取用內部變數 “inside” 是會報錯的,但在function內想取用外部變數 “outside” 則是可行的。

另外,var 的特性可以重複宣告與改值,那代表我們可以使用同樣的變數名稱但不同值也不會有報錯問題,這樣的運行方式會使我們的區域變數覆蓋掉全域變數或是forloop的循環變數洩漏為全域變數,導致程式碼結果錯誤,如下圖:

2. let :

ES6以後,在 let 的出現以及區塊概念出現後,原本有的問題就可以被避免掉,區塊為 { } 中,所以在 { } 內宣告的變數只能在內部使用,外部不是不能取得的。

let 的特性一樣可以改值,但卻不可以重複宣告!

如下圖,上面的重複宣告是會報錯。

let 的出現可說是挽救 var 的弱點,除了可以避免掉區域變數覆蓋全域變數以外,當然也解決了循環變數污染全域變數的問題!

3. const :

const 使用起來跟 let 很類似,差別在於 const宣告的變數是在無法重新指定值,也就代表在宣告的同時就必須賦予一個初始值,因為在此之後都是不能被改動的。

以上就是關於這三者之間的差異與特性。

結論

介紹到這邊好像跟標題沒有什麼關係,const 真的無法重新指定值嗎??
其實 const 無法重新指定值是針對變數,如果是物件的話,是可以被改變,但並不是直接改寫物件,而是改變它其中的屬性或是方法。

--

--

Nono's Note
Nono's Note

Written by Nono's Note

一位不是很厲害的前端工程師

No responses yet