Rest Parameters
정의
- 매개변수 앞에
...
을 붙여 사용하며 전달받는 모든 인수를 받을 수 있다. - 일반 매개변수와 함께 사용될 수 있으며 이럴 경우 일반 매개변수와 rest parameters에 순차적으로 할당된다.
-
rest parameter의 경우 이름처럼 나머지 인수이기 때문에 파라미터의 가장 마지막에 위치해야 한다.
- 예시
rest parameter 만 사용하는 경우
function sum(...rest) { return rest.reduce((a, b) => a + b); } console.log(sum(1, 2, 3, 4, 5)); // 15 출력
- rest parameter는 실제 배열이기 때문에
.map
,.reduce
같은 배열 메소드를 사용할 수 있다.
- rest parameter는 실제 배열이기 때문에
매개변수와 함께 사용되는 경우
function list(a, b, ...rest) { console.log(rest); // [ 3, 4, 5 ] return `a : ${a}, b : ${b}, rest : ${rest}`; } console.log(list(1, 2, 3, 4, 5)); // 'a : 1, b : 2, rest : 3,4,5'
주의 할 점
-
rest parameter는 가장 마지막에 와야한다.
function sum(...rest, param, param) { return rest.reduce((a, b) => a + b); } console.log(sum(1, 2, 3, 4, 5)); // SyntaxError: Rest element must be last element
-
rest parameter는 하나만 선언 할 수 있다.
function sum(...rest, ...rest) { return rest.reduce((a, b) => a + b); } console.log(sum(1, 2, 3, 4, 5)); // SyntaxError: Rest element must be last element
rest parameter 와 argument
-
arrow function 화살표 함수의 경우 arguments 객체를 갖지 않는다. 화살표 함수에서 가변 인자 함수를 구현할때 꼭 rest parameter를 사용해야 한다.
-
배열 메서드
arguments 객체의 경우 유사 배열 객체이므로 배열 메서드를 사용하려면 번거로운 과정을 거쳐야 했었다.
rest parameter는 인수 목록을 배열로 직접 전달 받을 수 있기 때문에 번거로움을 피할 수 있다.