展開運算子(Spread Operation) | Javascript

JavaScript 中的展開運算子是一種語法,通常用於將可迭代物件(例如陣列或字串)展開為其各個元素,或者用於合併物件的屬性。這個操作符由三個連續的點(…)組成。

1. 在陣列(Array)中的使用:

在陣列中展開運算子可以用於展開陣列的元素,方便地創建新陣列或合併多個陣列:

  • 雖然這樣複製出新陣列非常方便,但是要如果array1或array2裡面還有Reference Types的數據,這樣會是淺拷貝
const array1 = [1, 2, 3];
const array2 = [4, 5, 6];

const combinedArray = [...array1, ...array2];
// 結果為 [1, 2, 3, 4, 5, 6]

2. 在函數呼叫中的使用:

Spread操作符還可以用於將陣列中的元素作為函數的參數傳遞:

function exampleFunction(a, b, c) {
  console.log(a, b, c);
}

const array = [1, 2, 3];

exampleFunction(...array);
// 輸出為 1 2 3

3. 在物件中的使用:

在物件中,Spread操作符可以用於淺拷貝物件,或者合併多個物件的屬性:

const obj1 = { a: 1, b: 2 };
const obj2 = { c: 3, d: 4 };

const mergedObj = { ...obj1, ...obj2 };
// 結果為 { a: 1, b: 2, c: 3, d: 4 }

4. 在函數參數中的使用:

Spread操作符還可以在函數參數中用於收集剩餘的參數,創建一個包含所有傳入參數的陣列:

function exampleFunction(...args) {
  console.log(args);
}

exampleFunction(1, 2, 3);
// 輸出為 [1, 2, 3]

需要注意的是,Spread操作符在物件的使用時是淺拷貝,對於嵌套物件或陣列,只會複製它們的引用而不是創建新的副本。

Spread操作符提供了一種簡便的語法,使得處理陣列、物件等資料結構更加方便和靈活。