By value vs. by reference in JS

  • 說明

    • 將值傳遞給 function 或將值分配給 variable 時,值的傳遞方式。

    • 在處理物件和陣列時,有助於避免意外的副作用。

  • By value

    • 用在基本數據類型(如數字、字串、布林值等)。

    • 這表示當你將一個變數賦值給另一個變數時,實際上是將原始值的一個拷貝傳遞給了新變數。因此,對新變數的修改不會影響原始變數。

    • Example

      var num1 = 5;
      var num2 = num1; // 這裡 num2 包含了 num1 的值的拷貝
      
      num2 = 10;
      console.log(num1); // 輸出 5,因為 num1 和 num2 包含不同的數值
      
  • By reference

    • 用在處理物件(Object)陣列(Array)

    • 這表示當你將一個物件或陣列賦值給另一個變數時,實際上只是將引用(指向儲存在記憶體中的同一個物件)傳遞給了新變數。不會複製該值。

    • 如果你修改一個變數所引用的物件或陣列,會影響到所有引用相同物件或陣列的變數。

    • Example

      var obj1 = { name: "John" };
      var obj2 = obj1; // 這裡 obj2 和 obj1 指向相同的物件
      
      obj2.name = "Alice";
      console.log(obj1.name); // 輸出 "Alice",因為 obj1 和 obj2 引用相同的物件
      
1個讚