Картинки по запросу javascriptКак я уже писал (наверно), на смену циклам приходят генераторы ибо более узконаправленные аналоговые по функционалу конструкции. А всё почему? Всё потому, что в циклах слишком много особенностей и условностей, ведь это одна из самых примитивных и следовательно древних конструкций, существовавших в программировании с незапамятных времён (да-да, ещё с Assembler/Fortran или ещё какой древней дичи, которой даже ваша бабушка ужаснётся, ибо синтаксис там ну очень специфический, даже если сравнивать с C++ или Java. Но не будем об этом, сейчас поговорим о более насущном.

Особенностью цикла For (Пока) является точное повторение заданных действий пока основное условие не станет ложным, то есть довольно легко сделать бесконечным и убить программу, но это довольно легко обойти достаточно представить у себя в голове работу компилятора или интерпретатора при обработке вашего кода. Однако, существует целый ряд других особенностей, которые и являются одним из основных рассадников багов в программах. С чем это связано? Прежде всего тем, что сам дизайн цикла for подталкивает к изменениям состояния и побочным эффектам. Можно сказать, что достаточно лишь использовать локальное состояние, но нет. Оно разделяет точно те же проблемы, что и глобальное, но в меньшей степени, то есть, всякий раз используя циклы, вы сводили проблему именно что к минимуму, не избавляясь от неё полностью. Теперь об особенностях побочных эффектов. Они возникают когда функция модифицирует что-то за пределами своей области видимости, то есть что-то меняет, куда-то добавляет данные и так далее. Безусловно, это очень круто… но и очень опасно. Как говорил дядя Бэн «С великой силой приходит великая ответственность.», основная опасность заключается как раз в вышеописанной особенности, всё происходит вне зоны видимости и следовательно эти самые эффекты трудно отслеживать и тестировать.

Однако, вас никто не заставляет переходить, от циклов вряд ли кто откажется в ближайшей переспективе да и сами по себе аналоги циклов именно что в javascript (map/reduce) будут потяжелее, поэтому не стоит отказываться от for, он сослужит вам хорошую службу! Стоит лишь иногда задавать некоторые условия вне цикла, дабы интерпретатор более чётко понимал, что же вам требуется в итоге. На этом всё.

Добавить комментарий

Ваш электронный адрес не будет опубликован. Обязательные для заполнения поля помечены *

очиститьОтправить