やかんです。

「備忘録」と称して、「へー」と思ったことを書きます。

jsのforeachについて

jsのforeachは、「配列の各要素に対して、コールバック関数を実行する」ものです。

この、「コールバック関数を実行する」というところが結構ポイントなんじゃねって思いました。

例えば以下のコードのように、「関数の中でforrachを読んで、配列の要素が特定の条件を満たしている場合は関数を抜けたい」という場合を考えます。

async function f(someArray: string[]) {
    someArray.forEach((item) => {
      if (item === "a") {
        return;
      }
    });

    return;
  }

気持ちとしては、「itemがaに等しかったら、fという関数自体終えるよ」という気持ちなんですけど、この記述じゃ関数fは終わりません。最後まで突っ走ります。

なんで?

foreachは、配列の各要素に対してコールバック関数を実行する記述だからです。上の例だと、コールバック関数はreturnで抜けますが、外側の関数fについてreturnは何の効力も持ちません。

こういう時は大人しくforループなどを使いましょう。

以上、備忘録でした。最後までお読みいただき、ありがとうございます!