Codeit/JavaScript
Rest Parameter
효땡
2024. 8. 9. 09:18
Arguments의 단점
- Arguments 객체가 유사배열이기 때문에 배열의 메소드는 사용불가능
- 항상 함수 호출할 때 전달한 Arguments 전체를 다루기 때문에 특정값을 반환하기 위해서는 따로 indexing 작업이 필요함
function printArguments() {
for (const arg of arguments) {
console.log(arg);
}
};
-> 해결하기 위한 방법
Rest Parameter
- ...args
function printArguments(...args) {
for (const arg of args) {
console.log(arg);
}
};
function printArguments(...args) {
console.log(args.splice(0, 2)); // ['Young', 'Mark']
console.log(arguments.splice(0, 2); // TypeError
};
- Rest Parameter는 Parameter와 함께 사용 가능
- 일반 Parameter와 함께 사용할 때는 Rest Parameter는 제일 나중에 사용해야 함
function printRank(first, second, ...others) {
console.log('코드잇 레이스 최종 결과');
console.log(`우승: ${first}`);
console.log(`준우승: ${second}`);
for (const arg of others) {
console.log(`참가자: ${arg}`);
}
}
printRank('Phil', 'Won', 'Emma', 'Min', 'Luke');
/*
코드잇 레이스 최종 결과
우승: Phil
준우승: Won
참가자: Emma
참가자: Min
참가자: Luke
*/
실습
유튜브나 블로그에서 새로운 전자제품을 리뷰한느 콘텐츠를 보면 우스갯소리로 1세대는 거르는게 답이다.라는 말을 심심찮게 들을 수 있습니다.
그동안 새로운 버전으로 출시되는 제품들은 대부분 잔고장이나 버그들이 많았기 때문인데요.
rest parameter를 활용해서 함수를 호출할 때 여러 개의 아규먼트를 전달할 경우 첫 번째 아규먼트는 무시하고 두 번째 아규먼트부터 하나씩 콘솔에 출력하는 ignoreFirst 함수를 완성해주세요.
function ignoreFirst(first, second, ... others) {
console.log(`${second}`);
for (const arg of others) {
console.log(`${arg}`);
}
}
ignoreFirst('1세대', '2세대', '3세대');
ignoreFirst('곰팡이', '강아지', '고양이');
ignoreFirst(20, 9, 18, 19, 30, 34, 40);
실습 결과
2세대
3세대
강아지
고양이
9
18
19
30
34
40