CodeGym /Java Adesua /Frontend SELF TW /JavaScript 的特殊類型

JavaScript 的特殊類型

Frontend SELF TW
等級 35 , 課堂 1
開放

2.1 變數是引用

在 JavaScript 中,變數表示的是對物件的引用,而不是變數本身。這表示當你在 JavaScript 中創建變數時,實際上只是建立了一個指向記憶體中某個物件的引用。

語言的這個特性對於處理變數時具有重要的影響,特別是在將物件傳遞給函式或將它們分配給其他變數時。

當你創建變數並給它賦值時,JavaScript 將為該值在記憶體中分配一個物件,並讓變數成為該物件的引用。如果你將一個變數賦值給另一個變數,新的變數將會引用與原始變數相同的物件。這表示如果對一個變數中的物件進行修改(前提是該物件是可變的),改動將會影響到兩個變數。

範例:

JavaScript
    
      let a = [1, 2, 3];
      let b = a;

      b.push(4);
      console.log(a);  // 顯示: [1, 2, 3, 4]
    
  

我們往變數 b 中加入了數字 4,但這個數字也被增加到了變數 a 的列表中,因為兩個變數實際上都只是指向列表物件 [1, 2, 3] 的引用。

2.2 undefined 類型

在 JavaScript 中有兩個特殊的數據類型:nullundefined。這兩類型因為非常相似,經常讓開發者感到困惑,但它們的用途不同,適用於不同的場景。讓我們深入了解一下。

undefined 類型

undefined 類型表示的是尚未初始化的變數的值。當訪問物件中不存在的屬性或不存在的數組元素時,也會返回這個值。

範例

1. 尚未初始化的變數:

JavaScript
    
      let x;
      console.log(x); // undefined
    
  

2. 不存在的物件屬性:

JavaScript
    
      let obj = {};
      console.log(obj.property); // undefined
    
  

3. 不存在的數組元素:

JavaScript
    
      let array = [1, 2, 3];
      console.log(array[5]); // undefined
    
  

4. 函式缺少參數:

JavaScript
    
      function myFunction(a, b) {
        console.log(b); // undefined,如果呼叫 myFunction(1)
      }
      myFunction(1);
    
  

undefined 的特性:

  • undefined 是一個數據類型和一個值
  • typeof undefined 返回 undefined

2.3 null 類型

null 類型表示的是一個有意為之的空值。這種值通常用於初始化變數,表示該變數將來會被賦值為物件,或者用於清空變數的值。

範例

1. 初始化變數:

JavaScript
    
      let obj = null;
      console.log(obj); // null
    
  

2. 清空變數的值:

JavaScript
    
      let user = { name: "Alice" };
      user = null; // user 現在不再指向任何物件
    
  

null 的特性:

  • null 是表示空值的值
  • typeof null 返回 object,這是一個已知的 JavaScript 錯誤(事實上,null 並不是物件)

2.4 比較 null 和 undefined

儘管 nullundefined 都可以用來表示值的缺失,但它們在用途和使用情境上是不同的。

屬性 null undefined
類型 原始類型 (Primitive) 原始類型 (Primitive)
用途 有意為之的空值 尚未初始化的變數
使用情境 初始化變數,清空值 不存在的屬性、數組元素
預設值 有(未初始化的變數、函式參數)

使用範例

1. 初始化為物件或數組:

JavaScript
    
      let myObject = null;
      let myArray = null;
    
  

2. 檢查值:

JavaScript
    
      let value;

      if (value === undefined) {
        console.log("變數尚未初始化。");
      }

      let result = null;

      if (result === null) {
        console.log("值缺失。");
      }
    
  

3. 清空值:

JavaScript
    
      let person = { name: "Alice" };
      person = null; // 現在 person 不再指向任何物件
    
  

4. 檢查屬性的存在:

JavaScript
    
      let obj = {};

      if (obj.property === undefined) {
        console.log("屬性不存在。");
      }
    
  

理解 JavaScript 中 nullundefined 的區別,對於正確管理值和避免程式中的錯誤非常重要。

undefined 通常用來表示尚未初始化的變數或缺失的屬性,而 null 是用來明確表示值的缺失。

正確使用這些特殊類型的數據可以讓程式碼更加清晰和可預測。

留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION