ホームページ > ウェブフロントエンド > jsチュートリアル > JavaScript で「return」が「forEach」ループを中断しないのはなぜですか?

JavaScript で「return」が「forEach」ループを中断しないのはなぜですか?

Linda Hamilton
リリース: 2024-12-20 18:24:12
オリジナル
853 人が閲覧しました

Why Doesn't `return` Break a `forEach` Loop in JavaScript?

forEach 関数内の return の動作を理解する

JavaScript では、forEach 関数内の return キーワードの動作について誤解があることがよくあります。 。この記事は、その使用目的を明確にすることを目的としています。

次のコード スニペットを考えてみましょう:

$('button').click(function () {
  [1, 2, 3, 4, 5].forEach(function (n) {
    if (n == 3) {
      // It should break out here and doesn't alert anything after
      return false;
    }
    alert(n);
  });
});
ログイン後にコピー

このコードでは、反復を途中で停止するために forEach ループ内で return ステートメントが使用されています。ただし、コードは引き続き配列内の後続の要素を警告します。なぜこのようなことが起こるのでしょうか?

forEach の return の本質

一般的な考えに反して、forEach 関数内の return ステートメントは、forEach 関数内の return ステートメントの意味が異なります。 for や while などのループ構造。 forEach では、return はループの早期終了を意味しません。

Mozilla Developer Network の説明

Mozilla Developer Network の公式ドキュメントによると、

「スローする以外に forEach() ループを停止または中断する方法はありません」例外です。そのような動作が必要な場合、forEach() メソッドは間違ったツールです。

代替アプローチ

条件付きで停止することが目的の場合ループの反復では、利用可能な代替メソッドがあります:

  • 単純ループ: 早期終了の明示的な条件を指定して、従来の for または while ループを作成します。
  • for...of ループ: 即時性を提供する for...of ループを利用します。 Break ステートメントによる終了機能。
  • Array.prototype.every(): Every() メソッドを使用します。各要素に述語を適用し、述語がいずれかの要素に対して false を返した場合にループを早期に中断できます。
  • その他の配列メソッド: some()、find()、およびその他のメソッドfindIndex() は、特定の基準に基づいてループを中断する方法も提供します。

以上がJavaScript で「return」が「forEach」ループを中断しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート