MDN wants to learn about developers like you: https://qsurvey.mozilla.com/s3/MDN-dev-survey

Введение

Выражение for создаёт цикл, состоящий из 3 необязательных выражений в круглых скобках, разделённых точками с запятой.

Синтаксис

for ([инициализация]; [условие]; [финальное выражение])выражение
инициализация
Выражение (в том числе выражения присвоения) или определение переменных. Обычно используется, чтобы инициализировать счётчик. Это выражение может опционально объявлять новые переменные с помощью ключевого слова var. Эти переменные видимы не только в цикле, т.е. в той же области области видимости, что и цикл for. Результат этого выражения отбрасывается.
условие
Выражение, выполняющееся на каждой интерации цикла. Если выражение истинно, цикл выполняется. Условие не является обязательным. Если его нет, условие всегда считается истиной. Если выражение ложно, выполнение переходит к первому выражению, следующему за for.
финальное выражение
Выражение, выполняющееся в конце интерации цикла. Происходит до следующего выполнения условия. Обычно используется для обновления или увеличения переменной счётчика.
выражение
Выражение, которое выполняется, когда условие цикла истинно. Чтоб выполнить множество выражений в цикле, используйте блок ({ ... }) для группировки этих выражений. Чтобы не выполнять никакого выражения в цикле, используйте пустое выражение (;).

Примеры

Использование for

Следующий цикл for начинается объявлением переменной i и задания ей значения 0. Затем проверяет, что i меньше девяти, выполняет выражения внутри цикла и увеличивает i на 1 каждый раз.

for (var i = 0; i < 9; i++) {
   console.log(i);
   // ещё какие-то выражения
}

Необязательные выражения в  for

Все 3 выражения в цикле for не обязательны.

Например, в блоке инициализации не требуется определять переменные:

var i = 0;
for (; i < 9; i++) {
    console.log(i);
    // ещё выражения
}

Как и блок инициализации, блок условия не обязателен. Если пропустите это выражение, вы должны быть уверены, что прервете цикл где-то в теле, а не создадите бесконечный цикл.

for (var i = 0;; i++) {
   console.log(i);
   if (i > 3) break;
   // тут какой-то код
}

Вы можете пропустить все 3 блоки. Снова убедитесь, что используете break, чтоб закончить цикл, а также изменить счётчик, так что условие для break было истинно в нужный момент.

var i = 0;

for (;;) {
  if (i > 3) break;
  console.log(i);
  i++;
}

Использование for без блока выражений

Следующий цикл for вычисляет смещение позиции узла в секции [финальное выражение], и, следовательно, не требует использования выражения внутри цикла или блокапустое выражение используется вместо этого.

function showOffsetPos (sId) {
  var nLeft = 0, nTop = 0;

  for (var oItNode = document.getElementById(sId); // инициализация
       oItNode; // условие
       nLeft += oItNode.offsetLeft, nTop += oItNode.offsetTop, oItNode = oItNode.offsetParent) // финальное выражение
       /* пустое выражение */ ;
  
  console.log("Смещение позиции элемента \"" + sId + "\":\n left: " + nLeft + "px;\n top: " + nTop + "px;");
}

// Пример вызова:

showOffsetPos("content");

// Выводит:
// "Смещение позиции элемента "content":
// left: 0px;
// top: 153px;"
Замечание: В этом случае, когда вы не используете условие внутри цикла, точка с запятой ставится сразу после выражения цикла.

Спецификации

Спецификация Статус Комментарий
ECMAScript 2015 (6th Edition, ECMA-262)
Определение 'for statement' в этой спецификации.
Стандарт  
ECMAScript 5.1 (ECMA-262)
Определение 'for statement' в этой спецификации.
Стандарт  
ECMAScript 3rd Edition (ECMA-262)
Определение 'for statement' в этой спецификации.
Стандарт  
ECMAScript 1st Edition (ECMA-262)
Определение 'for statement' в этой спецификации.
Стандарт Изначальное определение

Поддержка в браузерах

Возможность Chrome Firefox (Gecko) Internet Explorer Opera Safari
Базовая поддержка (Да) (Да) (Да) (Да) (Да)
Возможность Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Базовая поддержка (Да) (Да) (Да) (Да) (Да) (Да)

Также можете просмотреть

Метки документа и участники

 Внесли вклад в эту страницу: romankrru, BychekRU, ascheyloven
 Обновлялась последний раз: romankrru,