일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- gcd(n. k) = 1
- 그래프 탐색
- ERD
- 그리디
- 게임 서버 아키텍처
- JavaScript
- Express.js
- insomnia
- 백준 15824번
- localstorage
- MySQL
- Next
- Prisma
- router
- HTTP
- pm2
- 이분 탐색
- html5
- DP
- string
- 백준 1086번
- MongoDB
- trie
- branch
- 자바스크립트
- 트라이
- PROJECT
- ccw 알고리즘
- Github
- map
Archives
- Today
- Total
dh_0e
[JavaScript] JS에서 가변 인자 처리하기 (rest parameters, arguments 객체) 본문
내일배움캠프/HTML,CSS,JavaScript
[JavaScript] JS에서 가변 인자 처리하기 (rest parameters, arguments 객체)
dh_0e 2024. 7. 31. 22:15rest parameters
- ES6에서 도입되었으며 함수의 매개변수로 전달된 가변 개수의 인자를 배열 형태로 처리할 수 있는 기능
- 함수 정의에서 사용되며 스프레드 연산자('...')를 매개변수로 사용하여 구현 (C와 동일)
function exampleFunction(arg1, arg2, ...restArgs) {
console.log(arg1); // 첫 번째 인자
console.log(arg2); // 두 번째 인자
console.log(restArgs); // 나머지 인자들 (배열 형태)
}
function sum(...numbers) {
return numbers.reduce((acc, num) => acc + num, 0);
}
console.log(sum(1, 2, 3)); // 6
console.log(sum(1, 2, 3, 4, 5)); // 15
위에 사용된 reduce 메서드에 대해 잠깐 설명하자면 배열의 각 요소를 순회하면서 하나의 값으로 축소하는 메서드이다.
array.reduce((accumulator, currentValue, currentIndex, array) => {
// 축소 로직
}, initialValue);
- accumulator: 누적 값, 이전 호출에서 반환된 값으로 초기값(initialValue)가 있다면 첫 번째 호출에서 이 값이 사용되며, 없다면 배열의 첫 번째 요소가 이 값으로 사용된다.
- currentValue: 현재 배열의 요소
- currentIndex: 현재 요소의 인덱스 (선택적)
- array: reduce 메서드에 호출된 배열 (선택적)
- initialValue: 첫 번째 호출 시 'accumulator'의 초기 값으로 제공하지 않으면 배열의 첫 번째 요소가 사용됨 (선택적)
arguments 객체
- 함수 내에서 사용 가능한 특수한 객체로, 함수에 전달된 인자들을 배열 형태로 접근할 수 있게 해 줌
- rest parameters보다 불편하고, 배열 메서드를 직접 사용할 수 없어 현대적인 코드에서 잘 사용되지 않음
function exampleFunction() {
console.log(arguments); // 인자들을 담고 있는 arguments 객체
}
function multiply() {
let result = 1;
for (let i = 0; i < arguments.length; i++) {
result *= arguments[i];
}
return result;
}
console.log(multiply(2, 3, 4)); // 24
console.log(multiply(1, 2, 3, 4, 5)); // 120
다음과 같이 arguments 객체의 요소를 수정하려고 해도 arguments 객체는 실제로 변경되지 않으며, 인수 값이 그대로 유지된 채로 반환한다.
function add() {
let add = 1;
for (let i = 0; i < arguments.length; i++) {
arguments[i] += add;
}
return arguments;
}
console.log(add(2, 3, 4)); // [2, 3, 4] 실제로는 변경되지 않음
console.log(add(1, 2, 3, 4, 5)); // [1, 2, 3, 4, 5] 실제로는 변경되지 않음
'내일배움캠프 > HTML,CSS,JavaScript' 카테고리의 다른 글
[JavaScript] ()를 이용한 객체 리터럴과 코드 블록 문 구분 (0) | 2024.08.08 |
---|---|
[VSC] Visual Studio Code 확장 프로그램 (0) | 2024.07.16 |
[JavaScript] ESLint로 JS 코드 에러 찾기 (0) | 2024.06.03 |
[JavaScript] localStorage (0) | 2024.05.08 |
[JavaScript] 개인 과제 중 배운 문법 (innerHTML, addEventListner, includes, toUpperCase, toLowerCase, Math.floor) (0) | 2024.05.01 |