HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-26
1 <p>for относится к низкоуровневым циклам. Он требует задания счетчика, правил его изменения и условия остановки. Было бы значительно удобнее обходить элементы коллекции напрямую, без счетчика. Многие языки программирования решают это введением специального вида цикла. В JavaScript тоже есть такой: for...of.</p>
1 <p>for относится к низкоуровневым циклам. Он требует задания счетчика, правил его изменения и условия остановки. Было бы значительно удобнее обходить элементы коллекции напрямую, без счетчика. Многие языки программирования решают это введением специального вида цикла. В JavaScript тоже есть такой: for...of.</p>
2 <p>Как видно из примера, код, использующий for...of, получается значительно чище, чем с использованием цикла for. for...of знает о том, как перебирать элементы и знает о том, когда они закончатся. Поэтому счетчик не используется, а вместо доступа к элементу по индексу, например userNames[i], в цикле создается переменная const name. На каждой итерации она принимает значение элемента массива userNames, область видимости константы ограничена телом цикла.</p>
2 <p>Как видно из примера, код, использующий for...of, получается значительно чище, чем с использованием цикла for. for...of знает о том, как перебирать элементы и знает о том, когда они закончатся. Поэтому счетчик не используется, а вместо доступа к элементу по индексу, например userNames[i], в цикле создается переменная const name. На каждой итерации она принимает значение элемента массива userNames, область видимости константы ограничена телом цикла.</p>
3 <p>Этот цикл отлично подходит для задач агрегации:</p>
3 <p>Этот цикл отлично подходит для задач агрегации:</p>
4 <p>for...of - это больше, чем просто цикл для массивов. Для полного понимания принципов его работы, нужно разбираться в темах, которые мы еще не проходили, среди них объекты, упаковка/распаковка и итераторы. Если по-простому, то разные данные в JavaScript могут притворяться коллекциями элементов. Самый простой пример - это строка: for...of перебирает строку посимвольно.</p>
4 <p>for...of - это больше, чем просто цикл для массивов. Для полного понимания принципов его работы, нужно разбираться в темах, которые мы еще не проходили, среди них объекты, упаковка/распаковка и итераторы. Если по-простому, то разные данные в JavaScript могут притворяться коллекциями элементов. Самый простой пример - это строка: for...of перебирает строку посимвольно.</p>
5 <p>Однако не следует путать строку с массивом. Несмотря на внешнюю схожесть доступа к элементам строки по индексу, строка массивом не является.</p>
5 <p>Однако не следует путать строку с массивом. Несмотря на внешнюю схожесть доступа к элементам строки по индексу, строка массивом не является.</p>
6 <h2>Применимость</h2>
6 <h2>Применимость</h2>
7 <p>В большинстве задач, использующих цикл, предпочтительнее for...of. Иногда его бывает недостаточно, и требуется ручное управление обходом. В таких случаях можно возвращаться к использованию for. Например, когда нужно идти не по каждому элементу массива, а через один:</p>
7 <p>В большинстве задач, использующих цикл, предпочтительнее for...of. Иногда его бывает недостаточно, и требуется ручное управление обходом. В таких случаях можно возвращаться к использованию for. Например, когда нужно идти не по каждому элементу массива, а через один:</p>
8 <p>Иногда нужно обходить массив в обратном порядке. for...of здесь бессилен и снова нужен for:</p>
8 <p>Иногда нужно обходить массив в обратном порядке. for...of здесь бессилен и снова нужен for:</p>
9 <p>Другие задачи вообще с массивами напрямую не связаны. К последним относятся ситуации, когда нужно перебирать числа в определенном диапазоне. В этом случае нет массива, по которому можно было бы пройтись с помощью for...of.</p>
9 <p>Другие задачи вообще с массивами напрямую не связаны. К последним относятся ситуации, когда нужно перебирать числа в определенном диапазоне. В этом случае нет массива, по которому можно было бы пройтись с помощью for...of.</p>
10 <p>Ну и наконец, встречаются задачи, в которых нужно во время обхода менять исходный массив:</p>
10 <p>Ну и наконец, встречаются задачи, в которых нужно во время обхода менять исходный массив:</p>
11 <p><em>Если заглядывать в будущее и в то, как пишется реальный код на JavaScript, то там появляются функции высшего порядка. То есть на практике циклы, можно сказать, не нужны за редким исключением. Однако, невозможно перепрыгнуть работу с циклами, так как это база. А функции высшего порядка требуют понимания таких тем, которые за один присест не изучаются.</em></p>
11 <p><em>Если заглядывать в будущее и в то, как пишется реальный код на JavaScript, то там появляются функции высшего порядка. То есть на практике циклы, можно сказать, не нужны за редким исключением. Однако, невозможно перепрыгнуть работу с циклами, так как это база. А функции высшего порядка требуют понимания таких тем, которые за один присест не изучаются.</em></p>