일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
- 배너
- banner
- 비동기 함수
- array
- 웹
- 자바스크립트
- 배너 슬라이더
- react
- 리액트배포
- 배열
- Github Pages
- vite
- js
- github
- 웹스토리지
- javascript
- dnd-kit
- 리액트
- slide
- 렌더링
- 배포
- HTTP
- 인덱스된 데이터베이스
- 자바스크립트 배열
- 슬라이드
- 슬라이더
- deploy
- 웹사이트
- React.js
- IndexedDB
- Today
- Total
Somedding
JavaScript rest 파라미터 본문
Rest
지난번에 spread 연산자에 대해서 알아봤다.
JavaScript spread 연산자
Spread spread operator는 영어 해석 그대로 '펼치는 연산자'이다. 결국 이 문법을 사용해서 배열 같은 iterable 객체와 일반적인 enumerable 객체를 여러 개의 요소로 펼치는 곳에 사용할 수 있다. 즉, 배열
duyaan.tistory.com
spread 연산자에서 '...' 문자를 통해 나타냈었는데, 이와 생김새가 같은 rest 파라미터에 대해서 알아보려고 한다.
rest 파라미터는 함수의 매개변수로 사용되어 함수에 전달된 인수들 중에서 일부를 배열로 모아 저장한다.
말했듯이 '...' 문자를 통해 사용한다.
아래는 간단한 예시이다.
function sum(...numbers) {
console.log(numbers); // [1, 2, 3, 4]
return numbers.reduce((total, num) => total + num, 0);
}
console.log(sum(1, 2, 3, 4)); // 10
sum이라는 함수에 1, 2, 3, 4를 파라미터로 넘겨주었다.
이때, sum에서 받을 때 '...numbers'는 rest 파라미터로서 함수에 전달된 모든 인수를 numbers에 할당한 것이다.
rest 파라미터로 할당된 인수들은 배열의 형태로 나타나게 된다.
콘솔에 numbers를 찍어보면 [1, 2, 3, 4]가 출력되는 것을 알 수 있다.
이렇게 rest 파라미터를 통해 전달받은 인수들을 배열로 함수 내에서 처리할 수 있게 된다.
함수 정의 시에 rest 파라미터를 쓰려면 다른 매개변수는 사용할 수 없느냐?라고 묻는다면 그건 아니다.
다음과 같이 작성할 수도 있다.
function person(name, age, ...phone){
console.log(name); // Kang
console.log(age); // 20
console.log(phone); // ['010-1234-5678', '010-1111-2222']
}
person('Kang', '20', '010-1234-5678', '010-1111-2222');
첫 번째 인자는 name에, 두 번째 인자는 20, 그 외의 나머지 인자는 phone에 담은 것이다.
이때, person에 여러 가짓수의 인자를 전달해 보면 조금 놀라운 결과가 나온다.
function person(name, age, ...phone){
console.log(name); // Kang
console.log(age); // 20
console.log(phone); // ['010-1234-5678']
}
person('Kang', '20', '010-1234-5678');
rest 파라미터에 할당되는 인자가 한 개의 경우에는
인자가 여러 가지인 경우와 동일하게 배열에 담긴다.
콘솔에 phone을 찍어보면 '010-1234-5678'이라는 문자열이 배열에 담겨 나오는 것을 볼 수 있다.
function person(name, age, ...phone){
console.log(name); // Kang
console.log(age); // 20
console.log(phone); // []
}
person('Kang', '20');
이번에는 rest 파라미터에 할당되는 인자가 하나도 없는 경우이다.
이 때는 오류를 출력하는 것이 아닌, phone에는 빈 배열이 담기는 것을 확인할 수 있다.
주의할 점
rest 파라미터를 사용할 때 주의할 점은 두 가지가 있다.
우선, 함수의 정의에는 한 가지의 rest 파라미터만 존재할 수 있다.
즉, 아래와 같이 사용할 수 없다.
function sum(...numbers, ...indexs){
// 함수 본문
}
두 번째는,
rest 파라미터는 항상 매개변수들의 가장 마지막에 와야 한다.
즉, 아래와 같이 사용할 수 없다.
function person(...phone, age, name){
// 함수 본문
}
배열에서의 rest
rest 파라미터는 함수에서만 사용되는 것이 아니라, 배열에서도 활용될 수 있다.
const [first, second, ...numbers] = [1, 2, 3, 4, 5];
console.log(first); // 1
console.log(second); // 2
console.log(numbers); // [3, 4, 5]
함수에서 매개변수로 쓰일 때랑 같은 맥락이고, 주의할 점도 같다.
객체에서의 rest
rest 파라미터 객체에서도 동일하게 활용될 수 있다.
const {a, b, ...others} = {a: 1, b: 2, c: 3, d: 4};
console.log(a); // 1
console.log(b); // 2
console.log(others); // {c: 3, d: 4}
글 내용 중, 잘못됐거나 더 알아야 하는 지식이 있다면 댓글로 남겨주시면 감사하겠습니다!
모두 좋은 하루 보내세요:)
'JavaScript' 카테고리의 다른 글
호이스팅(Hoisting) 이란? (0) | 2023.11.21 |
---|---|
주소창에 www.google.com을 입력하면? (0) | 2023.11.08 |
JavaScript spread 연산자 (0) | 2023.08.28 |
Map 자료 구조 (0) | 2023.07.24 |
Object 자료 구조 (0) | 2023.07.17 |