Коротка відповідь: використовуйте for...breakдля цього або змініть код, щоб уникнути зламу forEach. Не використовуйте .some()та .every()не наслідуйте for...break. Перепишіть свій код, щоб уникнути for...breakциклу чи використання for...break. Кожен раз, коли ви використовуєте ці методи як for...breakальтернативні, Бог вбиває кошеня.
Довга відповідь:
.some()і .every()обидва повертають booleanзначення, .some()повертається, trueякщо повертається який-небудь елемент, для якого передана функція повертається true, кожен повертається, falseякщо повертається який-небудь елемент, для якого передана функція false. Це те, що означають ці функції. Використання функцій для того, що вони не означають, набагато гірше, ніж використання таблиць для компонування замість CSS, оскільки це засмучує всіх, хто читає ваш код.
Крім того, єдиним можливим способом використання цих методів як for...breakальтернативи є створення побічних ефектів (зміна деяких варіантів поза .some()функцією зворотного виклику), і це не сильно відрізняється від for...break.
Таким чином, використання .some()або в .every()якості for...breakальтернативи петлі не вільні від побічних ефектів, це не набагато чистіше , то for...breakце засмучує, так що це не краще.
Ви завжди можете переписати свій код, щоб у цьому не було потреби for...break. Ви можете фільтрувати масив за допомогою .filter(), ви можете розділити масив за допомогою .slice()тощо, а потім використовувати .forEach()або .map()для цієї частини масиву.
returnдійсно продовжується ітерація, вона пропустить будь-який код, що з’являється після нього в блоці. Візьміть цей код , наприклад:[1,2,3].forEach(function(el) { if(el === 2) { console.log(`Match on 2!`); return; } console.log(el); });.Theconsole.log(el);буде пропущено , коли 2 підібраний.