JavaScript에서 중첩 함수

두 숫자를 매개변수로 받아 그 숫자들의 제곱의 합을 반환하는 함수가 있다고 가정해 봅시다:

javascriptfunction func(num1, num2) {
  return num1 * num1 + num2 * num2;
}

console.log(func(2, 3)); // 13 출력 (결과는 2 * 2 + 3 * 3)

제곱 연산을 보조 함수 square로 분리해 봅시다:

javascriptfunction square(num) {
  return num * num;
}

function func(num1, num2) {
  return square(num1) + square(num2);
}

console.log(func(2, 3)); // 13 출력

함수 square가 func 함수에서만 사용되고 다른 어떤 곳에서도 사용되지 않을 것이라고 확신한다고 가정해 봅시다.

이 경우, 실수로 누군가(자신이나 함께 작업하는 다른 프로그래머)가 사용하는 것을 방지하는 것이 편리할 것입니다.

JavaScript에는 우아한 해결책이 있습니다: 보조 함수 square를 func 내부에 배치할 수 있습니다. 이렇게 하면 보조 함수는 func 내부에서만 접근 가능하고 외부에서는 접근할 수 없게 됩니다.

이를 구현해 봅시다:

javascriptfunction func(num1, num2) {
  function square(num) {
    return num * num;
  }
  
  return square(num1) + square(num2);
}

console.log(func(2, 3)); // 13 출력

func 외부에서 square를 호출하려는 시도는 오류를 발생시킵니다:

javascriptfunction func(num1, num2) {
  function square(num) {
    return num * num;
  }
  
  return square(num1) + square(num2);
}

console.log(square(2)); //!! 오류 발생
Задание 1

두 숫자를 매개변수로 받아 첫 번째 숫자의 제곱과 두 번째 숫자의 세제곱의 합을 반환하는 함수 func를 만드세요. 이를 위해 숫자를 제곱하는 보조 함수 square와 숫자를 세제곱하는 보조 함수 cube를 만드세요.