Операторы циклов

  Формат применения:

      Выражение группировки кода скрипта в блоки возможного неоднократного (циклического) исполнения.
  Выражение группировки кода скрипта в блоки возможного неоднократного (циклического) исполнения (выражение цикла) - устанавливает отношения операндов на основе операторов циклов.
  Любое выражение группировки кода скрипта в блоки возможного неоднократного (циклического) исполнения не имеет ни какого конечного значения.
  Функционал циклических выполнений важная часть любого языка программирования.
  Выражения на основе операторов циклов.
  Условный цикл с приращением

Формат записи в коде скрипта:

  • for
     (

       [ Выражение инициализации ] ;
       [ Выражение с логическим значением ] ;
       [ Список выражений ]
     )
     { [ Блок операторов, который может включать операторы break ; и continue ; ] }


Значения формата записи:

  • for - Ключевое слово.
  • ( - Оператор группировки. Ключевое слово в этом формате.
  • Выражение инициализации -
      При отсутствии выражения инициализации закрывающая его точка с запятой (;) - обязательна.
  • Выражение с логическим значением -
      Арифметическое выражение,
        или логическое выражение,
        или выражение присвоения значения,
        или выражение доступа к сущности объекта,
        или выражение обращения к элементу массива,
        или выражение обращения к функции,
        или условное выражение,
        или выражение на основе функционального оператора,

    которое, в зависимости от выполнения блока операторов или выражений из списка выражений, может иметь текущее значение, эквивалентное значению true или false.
      Если выражение с логическим значением получит текущее значение true, то будет выполнен блок операторов.
      Если выражение с логическим значением получит текущее значение false, то условный цикл с приращением прервётся выходом из выражения, образованного ключевым словом for (за закрывающую for фигурную скобку - }).
      Проверка значения выражения с логическим значением выполняется каждый раз перед текущим выполнением блока операторов, если в его предыдущем проходе не сработал оператор break.
      Однако, кроме самого первого раза, проверка значения выражения с логическим значением всегда выполняется непосредственно после выполнения списка выражений (каждого выражения в порядке указанном списком). Перед самой первой проверкой значения выражения с логическим значением, список выражений будет проигнорирован.
      При отсутствии выражения с логическим значением закрывающая его точка с запятой (;) - обязательна.
  • Список выражений - Перечень выражений Javascript разделённых запятыми.
      Список выражений (каждое выражение в порядке указанном списком) будет выполняться столько раз, сколько выполнится блок операторов, если в текущем проходе блока операторов не сработает оператор break.
      Для наглядности кода каждое выражение из списка можно заключать в круглые скобки. В списке выражений нельзя использовать точку с запятой и фигурные скобки.
      То есть в списке выражений может быть любое выражение, за исключением выражений, в которых используются точка с запятой и фигурные скобки.
      Одно из выполнений списка выражений должно привести к тому, что выражение с логическим значением получит текущее значение false, если это не предусмотрено одним из выполнений блока операторов, или если одним из выполнений блока операторов не предусмотрена сработка оператора break.
      Список выражений всегда выполняется непосредственно после выполнения блока операторов, если блок операторов не будет прерван оператором break. Следовательно, список выражений будет проигнорирован после первой проверки выражения с логическим значением, но все выражения из этого списка будут выполнены перед каждой следующей проверкой выражения с логическим значением.
      Следовательно, если блок операторов не будет прерван оператором break, то выражения из списка выражений будут выполнены последний раз даже, если следующего выполнения блока операторов не последует.
      Как и выражение инициализации, и выражение с логическим значением, список выражений может отсутствовать в выражении условного цикла с приращением.
  • ) - Оператор группировки. Ключевое слово в этом формате.
  • { - Оператор группировки. Ключевое слово в этом формате.
  • Блок операторов - Код Javascript, выполнение которого должно повторяться до тех пор, пока выражение с логическим значением имеет значение true, или в этом блоке операторов не сработает оператор break.
      Одно из выполнений блока операторов должно привести к тому, что выражение с логическим значением получит значение false, если это не предусмотрено выполнением хотя бы одного выражения из списка выражений.
      Выполнение блока операторов также может привести к окончанию цикла без проверки значения выражения с логическим значением.
      Если в блоке операторов не сработал оператор break, то выполнение кода программы возобновится с выполнения списка выражений, а затем с проверки текущего значения выражения с логическим значением.
      На первом проходе условного цикла с приращением выполнение блока операторов последует перед выполнением списка выражений
      Если необходимости в блоке операторов нет, то его можно заменить "пустыми" фигурными скобками, или ограничить выражение условного цикла с приращением точкой с запятой.
  • break - Ключевое слово - оператор выхода из выражения, образованного ключевым словом for (за закрывающую for фигурную скобку - }).
      Оператор break может находиться в любом месте в блоке операторов.
      В блоке операторов может быть сколько угодно операторов break.
  • continue - Ключевое слово - оператор возврата к выполнению списка выражений и к последующей проверке значения выражения с логическим значением, без выполнения следующего за оператором continue кода в блоке операторов.
      Оператор continue может находиться в любом месте блока операторов.
      В блоке операторов может быть сколько угодно операторов continue.
  • ; - Оператор группировки. Ключевое слово в этом формате.
      Оператор ; - это закрывающий оператор для оператора break, для оператора continue, для выражения инициализации и для выражения с логическим значением.
  • } - Оператор группировки. Ключевое слово в этом формате.
  Вообще говоря, циклы подобные условному циклу с приращением называются циклами со счетчиком.
  То есть выражение инициализации должно задавать начальное значение некоего счетчика (переменной), выражение с логическим значением должно сравнивать текущее значение счетчика с заданным значением, достижение которого прекратит цикл, а список выражений (классически только одно выражение) должен реализовать алгоритм приращения значения счетчика.
  Однако формат JavaScript достаточно вольно относится к такой логике, и, в отличие от некоторых других языков, позволяет вообще ни как не связывать выражение инициализации, выражение с логическим значением и список выражений со счетчиком. Более того, формат JavaScript вообще допускает отсутствие выражения инициализации, выражения с логическим значением и списка выражений, каждого или их всех. Хорошо это или плохо? Скорее плохо, чем хорошо, поскольку злоупотребления такими вольностями могут привести к снижению наглядности кода и к трудностям с его сопровождением.
  Ниже приведены примеры, из которых видно, что при всей, казалось бы, незатейливости механизма условного цикла с приращением, допускаемый его формат в JavaScript оставляет широкое поле для различного рода логических экспериментов.
  Примеры кода с функционалом условного цикла с приращением:

       let i = null;

       let m = [4,3,2,1,0];

       for ( i = 0; i < 5; i++ ) {

          alert(i + m[i]);

       }



       let i = 0;

       for ( ; i < 5; ) {

           alert(i++);

       }



     let i = 0;

     for ( ; ; ) {

       alert(i++);

       if ( i === 3 ) {

         alert ("Цикл прерван на счётчике " + i);

         break;

       }

     }



       let i = 0;

       let m = [4,3,2,1,0];

       for ( alert("Начало цикла"); i < 5; (alert(i), alert(m[i]), i++) );



   let i = 0;

   for ( alert("Начало цикла"); i < 5; (alert(i), i++, alert(i), i++, alert(i), i++) ) {}



     let i = 0;

     let s = "Цикл не закончен";

     for ( alert("Начало цикла"); i < 5; alert(s) ) {

       if ( i === 4 ) {

        alert ("Цикл закончен"); s = "Цикл закончен в блоке операторов"

       }

       i++;

     }



     let i = 0;

     for ( alert("Начало цикла"); i < 5; (alert("Цикл не закончен"), i++ ) ) {

       if ( i === 3 ) {

        alert ("Цикл прерван в блоке операторов"); break;

       }

     }



     let i = 0;

     for ( alert("Начало цикла"); i < 7; i++ ) {

       if ( i > 4 ) {

        alert ("continue " + i);

        continue;

       }

       else {

        alert (i);

       }

     }
  Условный цикл с указателем.

Формат записи в коде скрипта:


  • do
      {
    [ Блок операторов, , который может включать операторы break ; и continue ; ] }
    while
      ( Список выражений )
    ;


Значения формата записи:

  • do - Ключевое слово. Указатель действия.
  • { - Оператор группировки. Ключевое слово в этом формате.
  • Блок операторов - Код Javascript, выполнение которого должно повторяться до тех пор, пока последнее выражение из списка выражений не получит текущее значение эквивалентное значению false, или в текущем выполнении этого блока операторов не сработает оператор break.
      Одно из выполнений блока операторов должно привести к тому, что последнее выражение из списка выражений, получит текущее значение, эквивалентное значению false, если это не предусмотрено выполнением хотя бы одного выражения из списка выражений.
      Выполнение блока операторов также может привести к окончанию цикла без проверки значения выражения с логическим значением.
      Если необходимости в блоке операторов нет, то его можно опустить.
  • break - Ключевое слово - оператор выхода из выражения, образованного ключевым словом do (за закрывающие do точку с запятой - ;) без выполнения выражений из списка выражений.
      Оператор break может находиться в любом месте кода блока операторов.
      В блоке операторов может быть сколько угодно операторов break.
  • continue - Ключевое слово - оператор возврата к выполнению выражений из списка выражений без выполнения следующего за оператором continue кода в блоке операторов.
      Оператор continue может находиться в любом месте блока операторов.
      В блоке операторов может быть сколько угодно операторов continue.
  • ; - Оператор группировки, закрывающий опрератор для оператора break и для оператора continue, а также закрывающий оператор для условного цикла с указателем. Ключевое слово в этом формате.
  • } - Оператор группировки. Ключевое слово в этом формате.
  • while - Ключевое слово.
  • ( - Оператор группировки. Ключевое слово в этом формате.
  • Список выражений - Перечень выражений Javascript разделённых запятыми.
      Список выражений (каждое выражение в порядке указанном списком) будет выполняться после каждого выполнения блока операторов и столько раз, сколько выполнится блок операторов, или пока в текущем выполнении блока операторов не сработает оператор break.
      Для наглядности кода каждое выражение из списка можно заключать в круглые скобки.
      В списке выражений нельзя использовать точку с запятой и фигурные скобки. То есть в списке выражений может быть любое выражение, за исключением выражений, в которых используются точка с запятой и фигурные скобки.
      Если последнее выражение из списка выражений не получит текущее значение эквивалентное значению false, то выполнение кода программы возобновится с начала блока операторов
      Если последнее выражение из списка выражений получит текущее значение эквивалентное значению false, то следующего выполнения блока операторов не будет, а выполнение кода начнётся после выражения образованного ключевым словом do (за закрывающей do точкой с запятой - ;).
      В вырожденном случае список выражений может состоять из единственного выражения:

        Арифметическое выражение,
        или логическое выражение,
        или выражение присвоения значения,
        или выражение доступа к сущности объекта,
        или выражение обращения к элементу массива,
        или выражение обращения к функции,
        или условное выражение,
        или выражение на основе функционального оператора,

    которое, в зависимости от выполнения блока операторов, может иметь текущее значение true или false.
  • ) - Оператор группировки. Ключевое слово в этом формате.
  В классическом виде логика условного цикла с указателем довольно проста. А именно - повторять выполнение блока операторов, который задан оператором do, до тех пор, пока выполняется условие заданное оператором while.
  Однако в JavaScript, возможность задавать оператором while не одно условное выражение, а целый список выражений, которые могут выполняться вслед за блоком операторов и реализовать множество сопутствующих вычислений, условный цикл с указателем позволяет создавать очень разнообразные логические конструкции.
  Примеры кода с функционалом условного цикла с указателем:

       let i = 0;

       let m = [4,3,2,1,0];

       do {

          alert(i + m[i]); i++

       }

       while ( i < 5 );



       let i = 0;

       let m = [4,3,2,1,0];

       do {

          alert("Проход цикла номер - " + i); i++;

       }

       while ( alert(i), alert(m[i-1]), i < 5 );



       let i = 0;

       do {

          alert("Проход цикла номер - " + (i+1));

       }

       while ( alert(i), i++, i < 5 );



       let i = 0;

       do {}

       while ( alert("Проход цикла номер - " + (i+1)), i++, i < 5 );



   let i = 0;

   do {

     i++;

     if ( i > 4 ) {

       alert ("continue " + i);

       continue;

     }

     else {

       alert (i);

     }

   }

   while (i < 7);



   let i = 0;

   do {

     if ( i > 4 ) {

       alert ("break " + i);

        break;

     }

   }

   while (alert( i++ ), i);
  Условный цикл без указателя.

Формат записи в коде скрипта:

  • while
        ( Список выражений )

       { [ Блок операторов, который может включать операторы break ; и continue ; ] }


Значения формата записи:

  • while - Ключевое слово.
  • ( - Оператор группировки. Ключевое слово в этом формате.
  • Список выражений - Перечень выражений Javascript разделённых запятыми.
      Список выражений (каждое выражение в порядке указанном списком) будет выполняться перед каждым выполнением блока операторов.
      Для наглядности кода каждое выражение из списка можно заключать в круглые скобки.
      В списке выражений нельзя использовать точку с запятой и фигурные скобки. То есть в списке выражений может быть любое выражение, за исключением выражений, в которых используются точка с запятой и фигурные скобки.
      Если последнее выражение из списка выражений не получит текущее значение эквивалентное значению false, то будет выполнен блок операторов
      Если последнее выражение из списка выражений получит текущее значение эквивалентное значению false, то блок операторов выполнен не будет, а выполнение кода начнётся после выражения, образованного ключевым словом while (за закрывающей while фигурной скобкой - }).
      Если в текущем выполнении блока операторов сработает оператор break, то выполнения выражений из списка выражений не произойдёт, а выполнение кода начнётся после выражения, образованного ключевым словом while (за закрывающей while фигурной скобкой - }).
      В вырожденном случае список выражений может состоять из единственного выражения:

        Арифметическое выражение,
        или логическое выражение,
        или выражение присвоения значения,
        или выражение доступа к сущности объекта,
        или выражение обращения к элементу массива,
        или выражение обращения к функции,
        или условное выражение,
        или выражение на основе функционального оператора,

    которое, в зависимости от выполнения блока операторов, может иметь текущее значение эквивалентное значению true или false.
  • ) - Оператор группировки. Ключевое слово в этом формате.
  • { - Оператор группировки. Ключевое слово в этом формате.
  • Блок операторов - Код Javascript, выполнение которого должно повторяться до тех пор, пока последнее выражение из списка выражений не получит текущее значение эквивалентное значению false, или в текущем выполнении этого блока операторов не сработает оператор break.
      Одно из выполнений блока операторов должно привести к тому, что последнее выражение из списка выражений, получит текущее значение, эквивалентное значению false, если это не предусмотрено выполнением хотя бы одного выражения из списка выражений.
      Выполнение блока операторов также может привести к окончанию цикла без проверки значения выражения с логическим значением.
      Если в блоке операторов не сработал оператор break, то выполнение кода программы возобновится с выполнения списка выражений (каждого выражения в порядке указанном списком).
      Если необходимости в блоке операторов нет, то его можно заменить "пустыми" фигурными скобками, или ограничить выражение условного цикла без указателя точкой с запятой.
  • break - Ключевое слово - оператор выхода из выражения, образованного ключевым словом while (за закрывающую while фигурную скобку - }) без выполнения выражений из списка выражений.
      Оператор break может находиться в любом месте блока операторов.
      В блоке операторов может быть сколько угодно операторов break.
  • continue - Ключевое слово - оператор возврата к выполнению списка выражений без выполнения следующего за оператором continue кода в блоке операторов.
      Оператор continue может находиться в любом месте блока операторов.
      В блоке операторов может быть сколько угодно операторов continue.
  • ; - Оператор группировки, закрывающий опрератор для оператора break и для оператора continue. Ключевое слово в этом формате.
  • } - Оператор группировки. Ключевое слово в этом формате.
  В классическом виде логика условного цикла без указателя отличается от логики условного цикла с указателем отсутствием оператора do (указателя) и тем, что условие выполнения блока операторов проверяется перед этим выполнением. То есть логика эта такова - выполнение условия заданного оператором while (в круглых скобках непосредственно после оператора while), ведёт к выполнению блока операторов, после чего снова следует проверка указанного условия.
  Однако в JavaScript, точно также как для условного цикла с указателем, в условном цикла без указателя есть возможность задавать оператором while не одно условное выражение, а целый список выражений, которые могут выполняться перед блоком операторов, поэтому условный цикл без указателя также позволяет создавать очень разнообразные логические конструкции.
  Примеры кода с функционалом условного цикла без указателя:

       let i = 0;

       let m = [4,3,2,1,0];

       while ( i < 5 ) {

          alert(i + m[i]); i++

       }



   let i = 0;

   while ( alert("Шаг цикла - " + i), i = i + 1 ) {

       if ( i === 3 ) {

         alert ("Цикл прерван на шаге - " + i);

         break;

       }

   }



       let i = 0;

       while ( alert(i), i++, i < 5 );

  Безусловный цикл для связанных сущностей

Формат записи в коде скрипта:

  • for
        ( Переменная in Объект|Массив )
        { Блок операторов, который может включать оператор break ; }


Значения формата записи:

  • for - Ключевое слово.
  • ( - Оператор группировки. Ключевое слово в этом формате.
  • Переменная - Имя переменной.
      Значение этой переменной будет содержать ссылку на текущую сущность (свойство или метод) экземпляра объекта, или текущий индекс элемента массива, которые автоматически последовательно перебираются в каждом проходе блока операторов.
  • in - Ключевое слово.
  • Объект - Любой операнд значения со значением экземпляра объекта.
      Сущности (перечислимые свойства и методы) этого экземпляра будут попеременно доступны к обработке в в каждом проходе блока операторов в текущем значении заданной переменной.
  • Массив - Любой операнд значения со значением массива.
      индексы элементов этого массива будут попеременно доступны к обработке в в каждом проходе блока операторов в текущем значении заданной переменной.
      Поскольку в безусловном цикле для связанных сущностей последовательность перебора элементов массива соответствует их физическому расположению в памяти, то логическая последовательность их индексов может быть нарушена.
  • ) - Оператор группировки. Ключевое слово в этом формате.
  • { - Оператор группировки. Ключевое слово в этом формате.
  • Блок операторов - Код Javascript, выполнение которого должно повторяться до тех пор, пока не исчерпаются все перечислимые свойства и методы экземпляра объекта или все элементы массива, или пока не сработает оператор break.
      В каждом проходе блока операторов переменная будет ссылаться на текущую сущность или текущий индекс.
  • break - Ключевое слово - оператор выхода из выражения, образованного ключевым словом for (за закрывающую for фигурную скобку -}).
      Оператор break может находиться в любом месте блока операторов.
      В блоке операторов может быть сколько угодно операторов break.
  • ; - Оператор группировки, закрывающий оператор для оператора break. Ключевое слово в этом формате.
  • } - Оператор группировки. Ключевое слово в этом формате.
  Не все свойства и методы объектов могут быть перечислимы.
  Как правило не перечислимы свойства встроенных объектов JavaScript.
  С помощью безусловного цикла для связанных сущностей можно выявить все свойства и методы любого объекта API-интерфейсов.
  Безусловный цикл для итерируемых сущностей.

Формат записи в коде скрипта:

  • for
         ( Переменная of Сущность )
         { Блок операторов, который может включать оператор break ; }


Значения формата записи:

  • for - Ключевое слово.
  • ( - Оператор группировки. Ключевое слово в этом формате.
  • Переменная - Имя переменной.
      Значение этой переменной будет содержать значение текущего элемента сущности, которые автоматически последовательно перебираются в каждом проходе блока операторов.
  • of - Ключевое слово.
  • Сущность - Любая итерируемая сущность.
      Значения элементов этой сущности будут последовательно доступны в к обработке в в каждом проходе блока операторов в текущем значении заданной переменной.
      Такой сущностью может быть массив, значения элементов которого будут доступны.
      Такой сущностью может быть и экземпляр объекта, значения перечислимых свойств которого будут доступны.
      Если экземпляр объекта будет является коллекцией или списком (например Set или NodeList), то с помощью безусловного цикла для итерируемых сущностей можно последовательно получить доступ ко всем значениям коллекции или списка.
      В отличие от безусловного цикла для связанных сущностей, в безусловном цикле для итерируемых сущностей последовательность перебора элементов соответствует их логической последовательности.
  • ) - Оператор группировки. Ключевое слово в этом формате.
  • { - Оператор группировки. Ключевое слово в этом формате.
  • Блок операторов - Код Javascript, выполнение которого должно повторяться до тех пор, пока не исчерпаются все элементы сущности, или пока не сработает оператор break.
      В каждом проходе блока операторов переменная будет ссылаться на текущее значение элемента сущности.
  • break - Ключевое слово - оператор выхода из выражения, образованного ключевым словом for (за закрывающую фигурную скобку).
      Оператор break может находиться в любом месте блока операторов.
      В блоке операторов может быть сколько угодно операторов break.
  • ; - Оператор группировки, закрывающий оператор для оператора break. Ключевое слово в этом формате.
  • } - Оператор группировки. Ключевое слово в этом формате.
  Не все свойства и методы объектов могут быть перечислимы.
  Как правило не перечислимы свойства встроенных объектов JavaScript.