Upgrade to Pro — share decks privately, control downloads, hide ads and more …

再帰関数を使ってみよう

 再帰関数を使ってみよう

フロントエンドLT会 vol.2 - 2020冬まつり の LT 用のスライドです。

Yoshiaki Itakura

December 02, 2020
Tweet

More Decks by Yoshiaki Itakura

Other Decks in Programming

Transcript

  1. 再帰関数の例 "There are 3 left." "There are 2 left." "There

    are 1 left." "Finished." 終了条件が無いと無限ループするの で、なるべく先に書いておく。 再帰呼び出し
  2. 実践1: オブジェクトから不要な値を取り除く やりたいこと ・値 が null の場合は undefined を返す ・値

    が Array の場合は null を undefined に変換した Array を返す ・値 が Object の場合は 値が null のプロパティを削除した Object を返す
  3. 実践1: オブジェクトから不要な値を取り除く ・x が null の場合  => undefined を返す ・x

    が Array の場合  => Array の要素毎に removeNull を呼び出し (再帰呼び出し)、結果を返す ・val が Object の場合  => 値が null のプロパティ削除後に、値毎に removeNull を呼び出し(再帰呼び出し)、結果を オブジェクトにして返す
  4. 実践2: 関数を定期的に実行する setTimeout と setInterval について 指定時間経過後、一度だけ関数を実行します。 setTimeout 各実行の間は指定した間隔で、定期的に関数を実行します。 setInterval

    再帰的な setTimeout は実行の間の遅延を保証しますが、 setInterval は保証しません。 setInterval は関数の実行時間がインターバルに含まれるため、実際の遅延は指定時間よりも短 くなります。 再帰的な setTimeout は固定の遅延を保証します。 https://ja.javascript.info/settimeout-setinterval 再帰的な setTimeout と setInterval
  5. 実践2: 関数を定期的に実行する ・タイマースタート時  => execute を指定して、setTimeout を呼び出 す ・execute 関数実行時

     => 自身(execute)を指定して、setTimeout を呼 び出す(再帰呼び出し) ・タイマーストップ時  => clearTimeout を呼び出して処理をキャンセ ルする https://gist.github.com/negibouze/6a8574432210ea87d6eef2bebcc03712 ※長いので画像は一部抜粋したものです。