3 lucruri pe care nu le știai despre bucla forEach din JS


crezi că știi exact cum funcționează bucla forEach în JS?
Ei bine, acestea au fost gândurile mele până de curând: „doar o buclă obișnuită for unde puteți folosi cu ușurință break sau return sau continue„.
 astăzi, vă voi arăta 3 lucruri pe care s-ar putea să nu le fi știut despre bucla forEach.
credeți că codul de mai jos ar imprima 1 2 și apoi se va opri?
array = ;array.forEach(function (element) {
console.log(element);
if (element === 2) 
return;
});// Output: 1 2 3 4
nu, nu va fi. dacă veniți dintr-un fundal Java, probabil că vă întrebați cum este posibil acest lucru?
 motivul este că trecem o funcție de apel invers în funcția noastră forEach, care se comportă la fel ca o funcție normală și se aplică fiecărui element, indiferent dacă return de la unul, adică atunci când elementul este 2 în cazul nostru.
din documentele oficiale MDN:
nu există nicio modalitate de a opri sau rupe o buclă
forEach()decât prin aruncarea unei excepții. Dacă aveți nevoie de un astfel de comportament, metodaforEach()este instrumentul greșit.
să rescriem codul de sus:
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
declarația returnnu va face nicio diferență, deoarece aplicăm funcția fiecărui element la fiecare iterație, prin urmare nu-i pasă dacă ați ieșit o dată, adică când elementul este 2.
nu puteți ‘rupe’
 credeți că o buclăforEach ar break în exemplul de mai jos?
const array = ;array.forEach(function(element) {
console.log(element);
if (element === 2) 
break;
});// Output: Uncaught SyntaxError: Illegal break statement
 nu, nici măcar nu va rula, deoarece instrucțiunea break nu este tehnic într-o buclă.
soluție?
folosiți doar o buclă normală for. Nimeni nu ar râde de tine.
const array = ;for (let i = 0; i < array.length; i++) {
console.log(array);
if (array === 2) 
break;
}// Output: 1 2
nu puteți ‘continua’
 vă așteptați ca codul de mai jos să omită imprimarea 2 pe consolă și să afișeze doar 1 3 4?
const array = ;array.forEach(function (element) {
if (element === 2) 
continue;
console.log(element);
});// Output: Uncaught SyntaxError: Illegal continue statement: no surrounding iteration statement
 nu, nici măcar nu va rula, deoarece instrucțiunea continue nu este într-o buclă, similară instrucțiunii break.
soluție?
folosiți din nou o buclă normală for.
for (let i = 0; i < array.length; i++) {
if (array === 2) 
continue;
console.log(array);
}// Output: 1 3 4
asta a fost! Sper că ai învățat ceva nou astăzi.