Подтвердить что ты не робот

Что означает ключевое слово `return` внутри функции` forEach`?

$('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)      
   })
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button>Click me</button>
4b9b3361

Ответ 1

От MDN:

Примечание. Невозможно остановить или разбить цикл forEach() иначе, чем выброс исключения. Если вам нужно такое поведение, метод .forEach() является неправильным инструментом, вместо этого используйте простой цикл. Если вы тестируете элементы массива для предиката и нуждаетесь в логическом возвращаемом значении, вы можете использовать каждый() или some() вместо этого.

Ответ 2

return выходит из текущей функции, но итерации продолжаются, поэтому вы получаете "следующий" элемент, который пропускает if и предупреждает о 4...

Если вам нужно остановить цикл, вы должны просто использовать простой цикл for так:

$('button').click(function () {
   var arr = [1, 2, 3, 4, 5];
   for(var i = 0; i < arr.length; i++) {
     var n = arr[i]; 
     if (n == 3) {
         break;
      }
      alert(n);
   })
})

Вы можете узнать больше о js break и продолжить здесь: http://www.w3schools.com/js/js_break.asp