- 주로 배열을 풀어서 인자로 전달하거나 각각의 요소로 넣을 때 사용.
function sum(x, y, z) {
return x + y + z;
}
const numbers = [1, 2, 3];
sum(...numbers)
- 파라미터를 배열의 형태로 받아서 사용할 수 있다.
- 파라미터 개수가 가변적일 때 유용.
- Rest parameter는 Spread syntax를 통해 간단하게 구현된다.
function sum(...theArgs) {
return theArgs.reduce((previous, current) => {
return previous + current;
});
}
sum(1,2,3)
sum(1,2,3,4)
reduce()
: 배열의 인자를 하나씩 순회하며 콜백함수 실행해서 값을 누적한다.
(인자로 콜백함수와 초기값을 받아오지만 여기서는 초기값이 없으므로 배열의 0번째 인덱스의 값을 초기값으로 두고 currentValue를 1번째 인덱스로 한다.
배열에서 사용하기
1. 배열 합치기
let parts = ['shoulders', 'knees'];
let lyrics = ['head', ...parts, 'and', 'toes'];
console.log(lyrics)
let arr1 = [0, 1, 2];
let arr2 = [3, 4, 5];
let arr3 = [...arr1, ...arr2];
console.log(arr3)
console.log(arr1)
2. 배열 복사
let arr = [1, 2, 3];
let arr2 = [...arr];
arr2.push(4);
console.log(arr2)
객체에서 사용하기
let obj1 = { foo: 'bar', x: 42 };
let obj2 = { foo: 'baz', y: 13 };
let clonedObj = { ...obj1 };
console.log(clonedObj);
let mergedObj = { ...obj1, ...obj2 };
mergedObj
함수에서 사용하기 : 나머지 파라미터 받아오기
function myFun(a, b, ...manyMoreArgs) {
console.log(a);
console.log(b);
console.log(manyMoreArgs);
}
myFun("one", "two", "three", "four", "five", "six");
- 나머지 파라미터들이 하나씩 들어옴.
(...
을 뗀 manyMoreArgs
은 배열의 형태)