JavaScript - 매개 변수

개발자 동찬 ㅣ 2023. 12. 26. 00:44

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

 

 

 

  • 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 의 값을 계속 추가 하여 구현