JavaScript에서 중첩 함수
두 숫자를 매개변수로 받아 그 숫자들의 제곱의 합을 반환하는 함수가 있다고 가정해 봅시다:
function func(num1, num2) {
return num1 * num1 + num2 * num2;
}
console.log(func(2, 3)); // 13 출력 (결과는 2 * 2 + 3 * 3)
제곱 연산을 보조 함수 square로 분리해 봅시다:
function 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 내부에서만 접근 가능하고 외부에서는 접근할 수 없게 됩니다.
이를 구현해 봅시다:
function func(num1, num2) {
function square(num) {
return num * num;
}
return square(num1) + square(num2);
}
console.log(func(2, 3)); // 13 출력
func 외부에서 square를 호출하려는 시도는 오류를 발생시킵니다:
function func(num1, num2) {
function square(num) {
return num * num;
}
return square(num1) + square(num2);
}
console.log(square(2)); //!! 오류 발생
두 숫자를 매개변수로 받아 첫 번째 숫자의 제곱과 두 번째 숫자의 세제곱의 합을 반환하는 함수 func를 만드세요. 이를 위해 숫자를 제곱하는 보조 함수 square와 숫자를 세제곱하는 보조 함수 cube를 만드세요.