
스프레드 문법(전개 문법) : 하나로 뭉쳐 있는 여러 값들의 집합을 펼쳐서 개별적인 값들의 목록으로 만든다.
const arr = [1,2,3];
const max = Math.max(...arr); // 3
rest 파라미터와 형태가 동일하여 혼동할 수 있으므로 주의!
// rest
function foo(...rest){
console.log(rest); //1,2,3
}
// 스프레드 문법
foo(...[1,2,3]);
// ES5
console.log([1,2].concat([3,4])); // [1,2,3,4]
// ES6
console.log([...[1,2], ...[3,4]]); // [1,2,3,4]
// ES5
var arr1 = [1,4];
var arr2 = [2,3];
Array.prototype.splice.apply(arr1, [1,0].concat(arr2));
console.log(arr1); // [1,2,3,4]
// ES6
const arr1 = [1,4];
const arr2 = [2,3];
arr1.splice(1,0, ...arr2);
console.log(arr1); // [1,2,3,4] 1, 4 사이에 추가!
// ES5
var origin = [1,2];
var copy = origin.slice();
// ES6
const origin = [1,2];
const copy = [...origin];
// 얕은 복사 하여 새로운 복사본 생성!
function sum(){
return [...arguments].reduce((a,b) => a + b, 0);
}
console.log(sum(1,2,3)); // 6
스프레드 문법의 대상은 이터러블이어야 하지만 스프레드 프로퍼티 제안은 일반 객체를 대상으로도 스프레드 문법의 사용을 허용한다.
스프레드 프로퍼티가 제안되기 이전에는 ES6에서 도입된 Object.assign 메서드를 사용하여 여러 개의 객체를 병합하거나 특정 프로퍼티를 변경 또는 추가했다.