2024-11-07|閱讀時間 ‧ 約 0 分鐘

JS學習筆記#8 | 引用資料型別(Reference Data Type)

在 JavaScript 中,資料型別主要分為原始型(Primitive Type)和引用型(Reference Type)


原始型(Primitive Type)

  • 定義:是儲存實際數據值的變數。它們在記憶體中直接存儲值,並且每個原始型變數都有自己的記憶體空間。
  • 資料型別StringNumberBooleanNullUndefinedSymbolBigInt
  • 特點
    • 值比較:當比較兩個原始型變數時,比較的是它們的值。
    • 獨立性:原始型變數之間的複製不會互相影響。修改其中一個不會影響另一個。
let x = 10; 
let y = 10;
console.log(x == y); // 輸出:true
let a = 10;
let b = a; // 將 a 的值複製到 b
b = 20; // 修改 b 不會影響 a
console.log(a); // 輸出:10
console.log(b); // 輸出:20

引用型(Reference Type)

  • 定義:儲存的是對象在記憶體中的地址,而不是實際的數據。這意味著多個變數可以指向同一個對象,並影響同一個記憶體位置。
  • 資料型別ObjectArrayFunction
  • 特點
    • 引用比較:當比較兩個引用型變數時,比較的是它們的記憶體位置。
    • 共享記憶體:如果兩個變數指向同一個對象,對該對象的任何更改都會影響這兩個變數。
let Array1 = [1, 2, 3]; 
let Array2 = [1, 2, 3];
console.log(Array1 == Array2); // 輸出:false ,因為其實是指向不同的記憶體位置
let Array1 = [1, 2, 3];
let Array2 = Array1;
console.log(Array1 == Array2); // 輸出:true ,因為指向相同的記憶體位置
let arr1 = [1, 2, 3];
let arr2 = arr1; // 將 arr1 的引用複製給 arr2
arr2[0] = 99; // 修改 arr2 的內容
console.log(arr1); // 輸出:[99, 2, 3],因為 arr1 和 arr2 指向同一個陣列

原始型與引用型的主要區別

  1. 儲存方式
    • 原始型:直接儲存值。
    • 引用型:儲存對象的地址(引用)。
  2. 複製行為
    • 原始型:賦值會複製其值,兩者相互獨立。
    • 引用型:賦值會複製其引用,兩者指向相同的對象,修改一個會影響到另一個。
  3. 比較行為
    • 原始型:比較的是值本身。
    • 引用型:比較的是記憶體地址,只有在指向同一個對象時才相等。




分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.