나머지 매개변수 (Rest Parameters)
ES2015에서 도입된 나머지 매개변수(Rest Parameters) 문법을 통해 똑같은 기능을 더 깔끔한 문법으로 구현할 수 있기 때문에, arguments
는 더 이상 사용되지 않는 기능이 되었습니다.
function sum(...ns) {
let result = 0;
for (let item of ns) {
result += item;
}
return result;
}
sum(1, 2, 3, 4); // 10
위의 예제와 같이, 매개변수 앞에 ...
을 붙여주면, 해당 매개변수에 모든 인수가 저장됩니다.arguments
와는 달리 나머지 매개변수는 실제 배열이기 때문에, 배열의 메소드를 활용할 수 있습니다.
function sum(...ns) {
// `for...of` 루프 대신에 `reduce` 메소드를 사용해서 합계를 구할 수 있습니다.
return ns.reduce((acc, itme) => acc + item, 0);
}
sum(1, 2, 3, 4); // 10
단, ...
문법은 마지막 매개변수에서만 사용할 수 있습니다.
function printGrades(name, ...grades) {
console.log(`${name} 학생의 점수는 ${grades.join(', ')} 입니다`);
}
printGrades('Mary', 96, 78, 68); // Mary 학생의 점수는 96, 78, 68 입니다.
아래와 같이 마지막 매개변수가 아닌 매개변수에 ...
문법을 사용하려고 하면 에러가 납니다.
function printGrades(name, ...grades) {
console.log(`${name} 학생의 점수는 ${grades.join(', ')} 입니다`);
}
// SyntaxError: Rest parameter must be last formal parameter
사실 arguments
객체는 더 많은 기능을 포함하고 있지만,
여기에서 소개하지 않은 기능은 '주인 없는 this'와 함께 예전 버전 JavaScript의 좋지 않은 부분 중 하나이므로 사용하지 않는 것이 좋습니다.
그래서 어떤 기능이 있는지 궁금하시다면 MDN 문서를 참고하세요
'DEV > NodeJS' 카테고리의 다른 글
ES2015 - Symbol (0) | 2020.10.02 |
---|---|
ES2015 - 분해대입 (Destructuring Assignment) (0) | 2020.10.02 |
ES2015 - 화살표 함수 (Arrow Function) (0) | 2020.09.15 |
ES2015 - 변수 (let, const) (0) | 2020.09.14 |
Express 모듈 설치 및 서버 실행 (0) | 2020.05.13 |