В Javascript есть несколько типов циклов «для». здесь мы собираемся взглянуть на каждого чуть глубже ...
В Javascript есть несколько операторов цикла, но в большинстве случаев каждый склонен использовать операторы for
, потому что мы обычно имеем дело со сценариями цикла, которые состоят из известных условий со счетчиками, или нам просто нужно выполнить итерацию по списку элементов данных.
Например: - Создание массива чисел для заданного начала и конца.
В этом простом примере начало и конец четко определены заранее, а также связаны со счетчиками (переход от начала до конца). Давайте рассмотрим типы for
для цикла…
Это хорошо известный базовый цикл for, имеющий следующий формат.
for([initialExpression]; [endingCondition]; [incrementalExpression]) // repetitive statements...
Важно отметить, что указанные выше выражения, которые находятся внутри for, не являются обязательными. Обычно повторяющиеся операторы этого простого цикла for будут выполняться до тех пор, пока [endingCondition]
не вернет false
(если он не указан, Javascript принимает его как true
, чтобы продолжить выполнение цикла). рассмотрим следующие примеры, демонстрирующие несколько ситуаций цикла for…
цикл for-in…
Этот тип цикла for будет перебирать свойства объектов (если конкретное свойство перечислимо). Если указана переменная типа Array или String, индексы обычно используются как ключи. давайте проверим несколько примеров ...
Вышеупомянутые примеры просто перебирают свойства объектов. В самом деле, мы не можем полностью доверять порядку цикла типа for-in из-за некоторых кросс-браузерных проблем. Важно отметить, что для получения свойства с помощью цикла for-in конкретное свойство должно быть перечислимым. рассмотрим следующий пример для неперечислимых свойств.
for of… loop
Это новая функция ES6. for-of создает цикл для повторяемых объектов. String, Array, TypedArray, Map и Set могут быть взяты как встроенные в повторяемых объектах.
См. Следующую демонстрацию со встроенными итерациями ..
Если есть особые требования, можно также определить настраиваемые итерируемые объекты. Итерируемые объекты - это просто объекты, но со специальным методом, называемым Symbol.interator, который известен как итератор по умолчанию в концепции итеративного протокола. После выполнения for-of он вызывает этот итератор по умолчанию, чтобы получить объект итератора для прохождения каждого элемента данных.
У объекта итератора есть next()
метод, который предоставит необходимые данные и условие остановки для цикла for-of. Более того, этот специальный метод и структура данных определены в протоколе итератора. Я провел эксперимент на консоли, как показано ниже, чтобы смоделировать, что произойдет с этим механизмом зацикливания.
Как вы можете видеть, метод next()
возвращает детали каждого элемента данных массива и в конечном итоге возвращает значение как undefined, также с done: true
, указывающим, что итерация завершена.
Который из? и когда?
Каждый тип цикла for полезен в разных случаях…
- Если счетчики / индексы необходимы при доступе к массиву или логическим элементам, связанным с индексами, лучше продолжить цикл for.
- Если есть необходимость получить доступ к свойствам / ключам вне зависимости от порядка, поможет for-in.
- Если вам просто нужно перебрать элементы данных итерируемого объекта (также, если вам, возможно, нужно применить некоторые изменения), for-of - очевидный выбор.
Лично я хотел бы выбрать for-of большую часть времени .. и for был выбран для некоторых алгоритмических вещей.
Удачного кодирования 😎