JSのforEachループについて知らなかった3つのこと

ティベリウ・オプレア
ティベリウオプレア

フォローしている

Jun26,2018·3分読み取り

JSでforEachループがどのように機能するかを正確に知っていると思いますか?まあ、これらは最近まで私の考えでした:”あなたが簡単にbreakまたはreturnまたはcontinueを使用できる通常のforループ”。

今日は、forEachループについて知らなかったかもしれない3つのことをお見せします。

以下のコードが1 2を印刷してから停止すると思いますか?

array = ;array.forEach(function (element) {
console.log(element);
if (element === 2)
return;
});// Output: 1 2 3 4

いいえ、そうではありません。Javaの背景から来た場合、あなたはおそらくそれがどのように可能であるか自問するでしょうか?

その理由は、forEach関数でコールバック関数を渡しているためです。returnが1つの場合、つまり要素が2の場合に関係なく、通常の関数と同じように動作し、各要素に適用されます。

公式のMDNドキュメントから:

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

上からコードを書き直してみましょう:

const array = ;const callback = function(element) {
console.log(element);
if (element === 2)
return; // would this make a difference? no.
}for (let i = 0; i < array.length; i++) {
callback(array);
}// Output: 1 2 3 4

各反復で各要素に関数を適用するため、returnステートメントは違いを生じません。

あなたは

を’破る’ことはできませんあなたはforEachループは、以下の例ではbreakだろうと思いますか?いいえ、break命令は技術的にはループ内にないため、実行されません。

通常のforループを使用するだけです。 誰もあなたを笑わないだろう。

const array = ;for (let i = 0; i < array.length; i++) {
console.log(array);
if (array === 2)
break;
}// Output: 1 2

あなたは’続行’することはできません

以下のコードがコンソールに2を印刷するのをスキップし、1 3 4のみを表示することを期待していますか?いいえ、continue命令はbreak命令と同様にループ内にないため、実行されません。

通常のforループをもう一度使用してください。

for (let i = 0; i < array.length; i++) {
if (array === 2)
continue;
console.log(array);
}// Output: 1 3 4

そうだった! 今日は何か新しいことを学んだことを願っています。