--- title: for slug: Web/JavaScript/Reference/Statements/for translation_of: Web/JavaScript/Reference/Statements/for ---
Выражение 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;"
Спецификация | Статус | Комментарий |
---|---|---|
{{SpecName('ES6', '#sec-for-statement', 'for statement')}} | {{Spec2('ES6')}} | |
{{SpecName('ES5.1', '#sec-12.6.3', 'for statement')}} | {{Spec2('ES5.1')}} | |
{{SpecName('ES3', '#sec-12.6.3', 'for statement')}} | {{Spec2('ES3')}} | |
{{SpecName('ES1', '#sec-12.6.2', 'for statement')}} | {{Spec2('ES1')}} | Изначальное определение |
{{ CompatibilityTable() }}
Возможность | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Базовая поддержка | {{ CompatVersionUnknown() }} | {{ CompatVersionUnknown() }} | {{ CompatVersionUnknown() }} | {{ CompatVersionUnknown() }} | {{ CompatVersionUnknown() }} |
Возможность | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Базовая поддержка | {{ CompatVersionUnknown() }} | {{ CompatVersionUnknown() }} | {{ CompatVersionUnknown() }} | {{ CompatVersionUnknown() }} | {{ CompatVersionUnknown() }} | {{ CompatVersionUnknown() }} |
do...while
for...in
for...of