JavaScript - 매개 변수
- 매개 변수의 개수보다 더 많이 인자가 전달되면 오류가 아닌 무시됨

- default 매개변수
충분한 숫자의 인자가 들어오지 않을 때 기본값을 설정하여 실행됨

- arguments
인자는 배열의 형태로 들어간다.
배열은 아니지만 배열처럼 사용할 수
있는 객체이다.

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}입니다.`
}
배열이 온다. 사용법은 동일

이후에 오는 이름은 학생이므로 for 문 을 이용하여 childrenStr 의 값을 계속 추가 하여 구현