Oct 13, 2021
ㄟ問你喔,var, let 和 const 有啥不同?之三 (const 的比較)
在開始比較 const 與 var、let 的差異之前,先認識一下 const 的基本概念吧。
用 const 來宣告的變數,被稱為「常數 (constant) 」,常數只可被讀取,但不允許更動。那什麼時機會用到 const 來宣告一個變數呢?例如:天上有一個太陽,太陽的數量是恆常不變的、或是一筆商品的定價,或任何你在開發上不希望被更動的資料等。
const 與 var、let 的比較
重點一,const 所宣告的變數:
跟 let 一樣都是區塊作用域。
重點二,const 所宣告的變數:
除了不可再一次用 const 宣告,也不可再重新賦予值。
當以 const 宣告 sunNum 這個變數,並賦予值為 1,又要再一次用 const 宣告這個變數的時候,主控台回傳告知 sunNum 這個變數已經被宣告過了。
接下來,如果要將 sunNum 重新賦予值為 100 的時候,也會得到主控台回傳「賦予值到常數」這個動作的報錯。
以上就是我試圖拆解並理解 var, let 和 const 這三者有何不同的過程:
首先,理解變數,以及如何宣告一個變數,再進一步理解全域作用域與區域作用域的範圍,並再將區域作用域拆解出函式作用域與區塊作用域,最後在這個基礎上,理解透過 var 宣告變數的函式作用域,以及 let 及 const 的區塊作用域的比較。
若有錯誤的部分請不吝指教,謝謝!
參考資料:
- JavaScript 變數作用域 Variable Scope
- JavaScript 那個 let, const, var 到底差在哪?
- 語法與型別
- [JS學徒特訓班] JavaScript ES6 : var, let, const 差異
- Why don’t we use var anymore?
- Var, Let, and Const — What’s the Difference?
- How JavaScript variable scoping is just like multiple levels of government
- [JavaScript] Javascript 的作用域 (Scope) 與範圍鏈 (Scope Chain):往外找
- 02 var、let、const 與 ES6 簡介
- 我知道你懂 hoisting,可是你了解到多深?