Коротка відповідь: використовуйте 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 підібраний.