上一篇介紹完了let與var宣告變數後,其實還有一個沒有提到,那就是const啦!在ES5以後跟let一起加入了Javascripts的大家庭,接下來就開始介紹const的特性與作用域吧。
const 有一個非常非常重要的特性!就是宣告完變數之後,不能夠重新給予值。這句話甚麼意思呢?舉個例子說明:
<script>
const x = 55555;
x = 45; //不允許
x = x - 5; //不允許
</script>
而const 的作用域其實跟let有些相似,都是在各自的函數中及花括號內可以取用。
<script>
var a=50;
//這裡的a=50
{
const a=25;
//這裡的a=25
}
//這裡的a=50
</script>
並且const 必須要在宣告變數時就給他數值,不能夠在之後賦予。
<script>
const data; //這樣會報錯,必須一開始就給予值
data='Jason';
const data ='Jason' ; //正確
</script>
這樣看起來const是不是格外嚴苛呢?但是當是物件或陣列時,其實是可以改變屬性及陣列裡的內容的!但同樣的無法重新宣告賦值。
<script>
const person = { name: "jason", weight: "68", height: "188" };
// 更改物件的屬性:
person.name = "Leo";
// 增加物件的key跟value:
person.bmi = "23";
</script>
//錯誤範例
<script>
const person = { name: "jason", weight: "68", height: "188" };
person = { name: "leo", weight: "77", height: "155" };
</script>
<script>
const person = ["jason", "leo", "dina"];
// 修改陣列元素:
person[2] = "nina";
// 新增陣列元素:
person.push("miko");
// 錯誤範例
const person = ["jason", "leo", "dina"];
person = ["miko","nina"]
</script>
雖然const宣告時要嚴苛,但也因為這樣,之後我們在管理變數上時,不會出現那麼多的問題,不然有時候都是全域宣告,數量一多起來維修上造成許多的負擔,因此影響程式報錯的機率也大大的提升,還有可以透過Typescripts去管理我們這些的規則!在之後有機會我們再來介紹,下一篇我們將說明數據類型!