JavaScriptにおける関数を返す関数
文字列を返す以下のような関数があるとします:
function func() {
return '!';
}
let result = func();
console.log(result); // '!' を出力
次に、文字列の代わりに、同様の考え方で 無名関数を返してみましょう:
function func() {
return function() {
return '!';
};
}
let result = func(); // 変数resultには関数が入る
console.log(result); // 'function() {return '!';}' を出力
ご覧の通り、変数 result は
関数になりました。その実行結果をコンソールに
出力してみましょう。そのためには括弧を付けます:
function func() {
return function() {
return '!';
};
}
let result = func();
console.log( result() ); // '!' を出力
func() の呼び出しが関数を返すので、
この返された関数をすぐに呼び出すこともできます。
このように:func()() - 最初の括弧は
関数 func の結果(それ自体が関数)を取得し、
2番目の括弧は func の結果に適用されます。
試してみましょう:
function func() {
return function() {
return '!';
};
}
console.log( func()() ); // '!' を出力
以下のように呼び出されたときに数値 1 を返す
関数 func1 を作成してください:func1()()。
同様に、数値 2 を返す関数 func2 も作成してください。
これらの関数の結果の合計を求めてください。