原始資料類型(Primitive Data Type)& 參考資料類型(Reference Data Type)


所謂「原始資料類型」,指的是該筆資料「確實」持有某個值,不會被更改;而「參考資料類型」,則只是「參考」記憶體中某位置的值,如果記憶體中的值被更改,就會連帶影響所有相關資料。


原始資料類型(primitive data type)

JavaScript 中共有 NumberStringBigIntBooleanNullundefinedSymbol 七種原始資料類型。
Number 為例,下列程式碼的輸出結果是什麼呢?

let num1 = 5;
let num2 = num1;
num1 += 6;

console.log(num2);

正確答案是 5。
num1 新的操作並不影響 num2 的結果,這是因為存取 num2 的值時,num2 自己便已經持有 5 這個數值,num1 怎麼變化都跟 num2 無關。


參考資料類型(reference data type)

除了上述七種之外的資料類型都屬「參考資料類型」,較常見的有物件、函數(也是一種物件)、陣列(依然是一種物件)等,若以陣列呈現類似上述範例的程式碼如下:

let arr1 = [1,2,3];
let arr2 = arr1;
arr1.push(4);

console.log(arr2);

顯示的結果變成[1,2,3,4]。
雖然操作的是 arr1,但因為 arr2 跟 arr1 讀取的是同一個記憶體位置,arr1 被更改也會連帶影響 arr2。

同樣地,如果更改 arr2 也會影響 arr1:

let arr1 = [1,2,3];
let arr2 = arr1;
arr2.push(5);

console.log(arr1);      //[1,2,3,5]
#javascript #原始資料類型 #參考資料類型







你可能感興趣的文章

弱弱的碰一下後端 —— 未完待續

弱弱的碰一下後端 —— 未完待續

出發點

出發點

讓 Jest 幫你的 code 做測試

讓 Jest 幫你的 code 做測試






留言討論