見出し画像

非同期処理を考える - まず高階関数。

高階関数とは関数の中で別の関数を呼び出して処理することができる関数。関数の引数に関数を指定して関数をデータとして処理できるということです。

この高階関数の中で使う引数の関数のことをコールバック関数と言います。

コールバック関数。

2つの関数。まずは、高階関数。

function fa(callback) {
  callback(); 
  console.log('メッセージを受け取りました');
}

そして関数引数になる関数、コールバック関数。


function callB() {
  console.log('こんにちは');
}

そして実行します。高階関数の引数にコールバック関数を入れて実行します、

fa(callB);

出力は

"こんにちは"
"メッセージを受け取りました"

となります。

もう少し掘り下げて関数全体を整理してあるサイトです。

再帰関数がちょっと高階関数に似ていて関数の中に関数を入れて繰り返しさせます。こちらの関数ですが自分自身の関数となります。

nの階乗を求めます。

function factorial(n) {
    if (n === 0 || n === 1) {
        return 1;
    } else {
        return n * factorial(n - 1);
    }
}

実行します。

let result = factorial(5);
console.log(result); 

結果は 120と出てきます。

フィボナッチの数列です。

三項演算子で、

function fib(n) {
  return n <= 1 ? n : fib(n - 1) + fib(n - 2);
}

普通に、

function fib(n) {
 if (n < 3) return 1;
 return fib(n - 1) + fib(n - 2);
}

console.log(fib(5))

関数fib(n)を作る時に同じ関数に引数を入れ込んだものを内部に配置します。"n"を変動させることにより、条件分岐を使いある一定のところで終わらせます。

条件をつけてその条件内では繰り返しを行うもの、再帰関数と呼ばれます。関数の中に関数ということでは高階関数と同様なので整理が必要です。

この記事が気に入ったらサポートをしてみませんか?