- 매개 변수의 개수보다 더 많이 인자가 전달되면 오류가 아닌 무시됨
![](https://blog.kakaocdn.net/dn/c8DnNO/btsCy7PkYSX/hkrfkR4ZDVaekIOzmp0KiK/img.png)
- default 매개변수
충분한 숫자의 인자가 들어오지 않을 때 기본값을 설정하여 실행됨
![](https://blog.kakaocdn.net/dn/dMt3LL/btsCzKM6oI7/rtOzEEOzTkxVgqrVICGG0K/img.png)
- arguments
인자는 배열의 형태로 들어간다.
배열은 아니지만 배열처럼 사용할 수
있는 객체이다.
![](https://blog.kakaocdn.net/dn/bMKPUq/btsCF7N1cax/6S0ga49FRBDRXj6Ek2eBJK/img.png)
arguments를활용한 함수
// ♻️ 새로고침 후 실행
const add = (a, b) => a + b;
const sub = (a, b) => a - b;
const mul = (a, b) => a * b;
const div = (a, b) => a / b;
// 4개의 함수 정의
function combineArms () {
return (x, y) => {
let result = x;
for (const arm of arguments) { // argument를를 순회하며
if (typeof arm !== 'function') continue; // function 타입인 경우에만
result = arm(result, y); // 해당 함수를 계산하고 result에 저장
}
return result;
}
}
const add_mul = combineArms(add, mul, 1, true); // 함수가 아닌 인자 1, true 무시됨
const add_mul_sub = combineArms(add, mul, sub); // 3개의 함수 실행됨
const add_mul_sub_div = combineArms(add, mul, sub, div); // 4개의 함수 계산됨
// 💡 익명 함수 사용됨
const add_mul_sub_div_pow
= combineArms(add, mul, sub, div, (x, y) => x ** y); // 인자로 익명함수도 사용 가능
익명 함수 : 이름이 있지만 함수로 정의 된것
() => return
- 나머지 변수
호이스팅
몇 개의인자가 올 지 모르는 상태
반과 선생님은 정해져 있는데 학생은 몇명이 올지 모르는 상황
console.log(
'3.',
classIntro(3, '김민지', '영희', '철수', '보라')
); // 호이스팅
function classIntro (classNo, teacher, ...children) {
console.log('1.', children);
console.log('2.', arguments);
let childrenStr = '';
for (const child of children) {
if (childrenStr) childrenStr += ', ';
childrenStr += child;
}
return `${classNo}반의 선생님은 ${teacher}, `
+ `학생들은 ${childrenStr}입니다.`
}
배열이 온다. 사용법은 동일
![](https://blog.kakaocdn.net/dn/bip4iS/btsCzF55opF/A470UrM9WILTnwzFziGKLK/img.png)
이후에 오는 이름은 학생이므로 for 문 을 이용하여 childrenStr 의 값을 계속 추가 하여 구현
'자바스크립트' 카테고리의 다른 글
JavaScript - 함수 (0) | 2023.12.26 |
---|---|
JavaScript - 일급 객체 (1) | 2023.12.26 |
JavaScript - 토이 프로젝트 - 계산기 (0) | 2023.12.21 |
JavaScript - 함수 호출 / 호출 스택 / 호이스팅 (0) | 2023.12.21 |
JavaScript 우아한 테크 코스 - 1주차 숫자 야구 게임 (0) | 2023.12.20 |