Coding / Programming Videos

Post your favorite coding videos and share them with others!

[JavaScript Weird 支線]Day 54 — let 與 const – pvt5r486 – Medium

Source link

let 與 const 是 ES6 之後才加入的宣告變數的方式,宣告出來的變數表現也不太相同,這篇記錄會比較著墨於 const 的表現上。

Photo by rawpixel on Unsplash

什麼是變數

首先必須要先了解什麼是變數,這將有助於了解後續相關知識。

  • 只有透過 var / let / const 宣告的才算是變數
  • 變數只存在於當前範圍下,而且不能刪除
  • 變數指向物件的記憶體位址,不包含物件的內容亦不會有型別,換句話說變數內不會裝著字串「安安」或是數字「5 」,變數只會儲存「要指向該物件的記憶體位址
  • 使用 var 建立一個全域變數 a ,這時的變數 a 會被掛到 window 物件下成為屬性,並且無法被刪除。

一些關於變數、屬性的比較可以看這篇初次參加保哥的《 JavaScript 開發實戰:核心概念篇》感想或者是看當天上課的筆記。

var 與 let

這兩者的行為是比較接近的,但在範圍 ( Scope ) 以及一些表現上有點不同,之後會有比較詳細的介紹,或者是喚醒其他世界線的記憶,如果不想思考的話,結論就是「從現在開始都用 let 取代 var 」。

const

const 就是常數的意思,使用的時候必須直接賦予一個初始值,而且之後不能透過任何方式改變這個值,也無法重複宣告。

透過例子了解以上這段話

const a;
// Missing initializer in const declaration

上面這個範例不能運作。

  • 原因是 const 使用的時候必須直接賦予一個初始值

因此必須像下面這個例子一樣

const a = 10;
console.log(a); // 10
  • const 使用的時候無法重複宣告
const a = 10;
const a = 1;
// Identifier 'a' has already been declared
  • 使用 const 的話,不能透過任何方式改變變數的值,而這個「值」的意思其實就是說「不能改變變數指向的記憶體位址」,讓我們畫圖理解。
const a = 10;
a = 15;
console.log(a);
// Assignment to constant variable.

在第一行,建立一個原始型別 (number) 的物件並且令使用 const 建立的變數 a 指向它。

第二行,同樣建立一個原始型別的物件,並且試圖令變數 a 指向它,如紅色箭頭所示,因為這個變數 a 是使用 const 宣告的,所以無法改變變數指向的記憶體位址。

Source link

Bookmark(0)
 

Leave a Reply

Please Login to comment
  Subscribe  
Notify of
Translate »