Что означает ключевое слово `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>
Ответы
Ответ 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