JavaScriptにおけるネストされた関数
2つの数値をパラメータとして受け取り、 それらの数値の二乗和を返す関数があるとします:
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)); //!! エラーが発生します
2つの数値をパラメータとして受け取り、
1番目の数値の二乗と2番目の数値の三乗の和を返す関数 func を作成してください。
そのために、数値を二乗するヘルパー関数 square と、
数値を三乗するヘルパー関数 cube を作成してください。