rest parameter(나머지 파라미터 ...
)
일정하지 않은 갯수의 파라미터를 넘길 때 유용합니다.
1 2 3 4 5 6 7
| function addNum(...numbers) { return numbers.reduce((sum, number) => { return sum + number; }, 0); } addNum(1,2,3,4,5);
|
arguments와 비교해보면 rest parameter의 장점이 드러납니다.
ES5이하
1 2 3 4 5 6 7
| function arr() { console.log(arguments); // 유사배열인 [1,2,3,4,5,true,null,undefined] var arg = Array.prototype.slice.call(arguments, 2); console.log(arg); // [3,4,5,true,null,undefined] } arr(1,2,3,4,5,true,null,undefined);
|
이렇게 유사배열을 배열로 사용하려면 Array.prototype.slice.call
방식을 사용했습니다.
ES6
1 2 3 4 5
| function arr(x , y, ...rest) { console.log(rest); } arr(1,2,3,4,5,true,null,undefined);
|
rest parameter방식을 사용하면 유사배열이 아닌 실제 배열로 반환합니다. [3,4,5,true,null,undefined]
ES6 포스팅
변수선언 let, const
Blocks and IIFEs
Strings 문자열표기법 등
Arrow functions
Class
rest parameter
spread operator
default parameter