Skills/JavaScript

221129 function03.html (나머지 매개변수, 디폴트 매개변수)

개발자 윤구나 2022. 11. 29. 12:07
<!DOCTYPE html>
<html lang="ko">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>function</title>
    <script>
      // 가변 매개변수 함수 or 나머지 매개변수 함수 (데이터를 배열로 받는다.)
      // 기본 사용법: function name(...변수이름) {}
      // 예:
      function func(...items) {
        document.write(items, "<br />");
        console.log(items, "<br />");
      }

      func(1, 2);
      func(1, 2, 3);
      func(1, 2, 3, 4);


      // ******** 가변 매개변수 함수: min값 찾기 ********
      function min(...items) {
        let min = items[0];

        for (let item of items) {
          if (item < min) {
            min = item;
          }
        }

        return min;
      }

      let result = min(45, 6, 83, 62, 5, 59)
      document.write(result);


      // ******** 가변 매개변수 함수: 변수 + 배열 함께 받기 ********
      function func(a, b, ...items) {
        // 변수 + 배열로 받아져서 복잡함. 잘 사용하지 않음.
        document.write(a, b, items, "<br />");
        console.log(a, b, items, "<br />");
      }

      func(1, 2);
      func(1, 2, 3);
      func(1, 2, 3, 4);

      // 기본 매개변수 함수 or 디폴트 매개변수 함수
      // 기본값 적용. (ex. 함수에 b=2라고 지정 해뒀을 때, 값 입력이 안되면 기본값으로 적용함.)
      // 예:
      function func(a, b = 2) {
        // 디폴트 매개변수는 뒤에서부터 값을 채워야한다.
        document.write(`${a} and ${b} <br />`);
      }

      func(1, 1);
      func(1);
      func(1, 4);


      // ******** 디폴트 매개변수 함수: 일주일 수업시간 계산 ********
      function studyTime(name, hours = 8, days = 5) {
        document.write(`** ${name}님의 주 수업시간 계산 ** <br />`);
        document.write(`하루수업 시간: ${hours} <br />`);
        document.write(`주 수업일수: ${days} <br />`);
        document.write(`일주일 수업 시수: ${hours * days} <br /><br />`);
      }

      studyTime("홍길동");
      studyTime("이순신", 6);
      studyTime("윤동주", 5, 6);

      // 과제1. 두 값을 받아서 최소값, 최대값 찾고 최소값에서 최대값까지 합구하기
      let num1 = parseInt(
        prompt("서로 다른 두 수를 입력하세요. (첫번째 정수입력)")
      );
      let num2 = parseInt(
        prompt("서로 다른 두 수를 입력하세요. (두번째 정수입력)")
      );

      function sumMinMax(a, b) {
        let min = 0;
        let max = 0;
        let sum = 0;

        if (a > b) {
          max = a;
          min = b;
        } else {
          max = b;
          min = a;
        }

        document.write(`최소값은 ${min}입니다.<br />`);
        document.write(`최대값은 ${max}입니다.<br />`);

        for (let i = min; i <= max; i++) {
          sum += i;
        }

        return sum;
      }

      let result = sumMinMax(num1, num2);
      document.write(`최소값부터 최대값까지의 합은 ${result}입니다.`);

      // 과제2. 디폴트 매개변수 이용해서 아르바이트 월페이 구하기
      document.write(`*최저시급 9,160원<br /><br /><br />`);

      function ptPay(name, hours = 4, days = 20) {
        document.write(`**** ${name}님의 급여명세서 ****<br />`);
        document.write(`일일 근무시간: ${hours}시간<br />`);
        document.write(`근무일수: ${days}일<br />`);
        document.write(`총 근무시간: ${hours * days}시간<br />`);
        document.write(`급여: ${hours * days * 9160}원<br /><br />`);
      }

      ptPay("a");
      ptPay("b", 5);
      ptPay("c", 4, 8);
    </script>
  </head>
  <body></body>
</html>