스프레드 문법 ...은 하나로 뭉쳐 있는 여러 값들의 집합을 펼쳐서 개별적인 값들의 목록으로 만듭니다. 기존 배열이나 객체의 전체 또는 일부를 다른 배열이나 객체로 빠르게 복사할 수 있습니다.
스프레드 문법은 배열과 객체를 다루는 데 있어 코드의 간결성과 가독성을 크게 향상시켜줍니다.
스프레드 문법은 ES6에서 도입되었습니다.
const arr1 = [1, 2];
const arr2 = [3, 4];
const array = arr1.concat(arr2);
console.log(array); // [1, 2, 3, 4]
스프레드 문법이 도입 되기 전에는 2개의 배열을 1개의 배열로 병합하고 싶은 경우 concat 메서드를 사용했습니다.
스프레드 문법을 사용하면 별도의 메서드를 사용하지 않고 2개의 배열을 1개의 배열로 병합할 수 있습니다.
const arr1 = [1, 2];
const arr2 = [3, 4];
const array = [...arr1, ...arr2];
console.log(array); // [1, 2, 3, 4]
스프레드 연산자를 활용해 보다 간편하고 깔끔하게 병합이 가능합니다.
병합 뿐만 아니라 배열의 중간에 다른 배열의 요소들을 추가하거나 배열 복사에도 스프레드 문법을 통해 간편하고 깔끔하게 사용이 가능합니다.
우선 배열 요소들을 추가 경우입니다.
const arr1 = [1, 4];
const arr2 = [2, 3];
arr1.splice(1, 0, ...arr2);
console.log(arr1); // [1, 2, 3, 4]
배열 복사 경우입니다.
ES5에서는 배열을 복사하려면 slice 메서드를 사용했지만 스프레드 문법을 사용하여 간결하고 가독성 좋게 작성이 가능합니다.
const origin = [1, 2];
const copy = [...origin];
console.log(copy); // [1, 2]
스프레드 문법은 일반 객체를 대상으로도 사용이 가능합니다.
const user = { name: 'Ju', city: 'Seoul' };
user = { ...user, age: 27 };
console.log(user); // { name: 'Ju', city: 'Seoul', age: 27 }
스프레드 문법을 사용하여 객체를 병합할 때, 나중에 나온 속성이 앞의 속성을 덮어쓰게 됩니다.
const user = { name: 'Ju', city: 'Seoul' };
user = { ...user, age: 27 };
user = { ...user, name: 'MinJae' };
console.log(user); // { name: 'MinJae', city: 'Seoul', age: 27 }
✅ 참고