Когда вы используете функцию .each
jQuery, вы передаете функцию, которая будет выполняться для каждого значения в массиве. Ключевое слово continue
не подразумевается в функциях, а только в прямом цикле. Причиной сбоя jQuery при возврате ложного значения является то, что эта строка в библиотеке jQuery:
if ( callback.apply( object[ name ], args ) === false ) {
break;
}
jQuery преднамеренно выходит из цикла, когда исполняемая функция возвращает false. Было бы здравым смыслом добавить это, верно? Поскольку он использует ===
, вы можете вернуть все, что не равно false
, включая undefined
, null
, 0
, true
или что угодно. Пока он не равен false
, цикл будет продолжаться.
$.each([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], function(i) {
if(i > 5) { return false; } // if(i > 5) { break; }
if(i < 2) { return null; } // if(i < 2) { continue; }
console.log(i);
});
Ваша консоль будет выглядеть так:
2
3
4
5
Обратите внимание, что он не регистрировал 0 и 1. i
был меньше 2, поэтому он продолжил без регистрации. Обратите внимание, что он не регистрировал 6, 7, 8 и 9. Это потому, что когда i
стало больше 5, он вернул false.