--- title: for slug: Web/JavaScript/Reference/Statements/for tags: - JavaScript - Loop - Reference - Statement translation_of: Web/JavaScript/Reference/Statements/for ---
for 문은 괄호로 감싸고 세미콜론으로 구분한 세 개의 선택식과, 반복을 수행할 문(주로 {{jsxref("Statements/block", "블럭문", "", 0)}})으로 이루어져 있습니다.
for ([initialization]; [condition]; [final-expression]) statement
initialization
var
또는 let
키워드를 사용해 새로운 변수를 선언할 수도 있습니다. var
키워드로 선언한 변수는 반복문에 제한되지 않습니다. 즉 for
문과 같은 범위scope에 위치합니다. let
키워드로 선언한 변수는 반복문의 지역 변수가 됩니다.condition
statement
를 실행합니다. 이 식을 넣지 않았을 때 계산 결과는 언제나 참이 됩니다. 계산 결과가 거짓이라면 for
문의 바로 다음 식으로 건너 뜁니다.final-expression
condition
평가 이전에 발생합니다. 주로 카운터 변수를 증감하거나 바꿀 때 사용합니다.statement
{ ... }
)으로 묶어야 합니다. 아무것도 실행하지 않으려면 {{jsxref("Statements/empty", "공백문", "", 0)}} (;
)을 사용하세요.for
사용하기다음 for
문은 변수 i
를 선언하고 0으로 초기화하여 시작합니다. i
가 9보다 작은지를 확인하고 맞으면 명령문을 수행한 후 i
의 값을 1 높입니다.
for (var i = 0; i < 9; i++) { console.log(i); // 기타 등등 }
for
반복문의 3개 식은 모두 선택 사항입니다.
예를 들어, 변수를 초기화하려고 initialization
블럭을 사용할 필요는 없습니다.
var i = 0; for (; i < 9; i++) { console.log(i); // 기타 등등 }
initialization
블럭처럼 condition
블럭도 선택 사항입니다. 다만 이 경우, 반복문 본문에 무한 반복을 탈출할 수 있는 장치를 추가해야 합니다.
for (var i = 0;; i++) { console.log(i); if (i > 3) break; // 기타 등등 }
세 가지 모두 생략할 수도 있습니다. 위와 같이 {{jsxref("Statements/break", "break")}} 문을 사용해 반복을 탈출할 수 있도록 추가하고, 변수를 수정해 탈출 조건이 언젠가 참이 되도록 해야 합니다.
var i = 0; for (;;) { if (i > 3) break; console.log(i); i++; }
for
사용하기다음 for
반복 사이클은 노드의 위치 오프셋을 final-expression
에서 계산해 문이나 블럭문이 필요하지 않으므로 세미콜론을 사용합니다.
function showOffsetPos(sId) { var nLeft = 0, nTop = 0; for ( var oItNode = document.getElementById(sId); /* initialization */ oItNode; /* condition */ nLeft += oItNode.offsetLeft, nTop += oItNode.offsetTop, oItNode = oItNode.offsetParent /* final-expression */ ); /* semicolon */ console.log('Offset position of \'' + sId + '\' element:\n left: ' + nLeft + 'px;\n top: ' + nTop + 'px;'); } /* Example call: */ showOffsetPos('content'); // Output: // "Offset position of "content" element: // left: 0px; // top: 153px;"
Specification | Status | Comment |
---|---|---|
{{SpecName('ES1', '#sec-12.6.2', 'for statement')}} | {{Spec2('ES1')}} | Initial definition. |
{{SpecName('ES3', '#sec-12.6.3', 'for statement')}} | {{Spec2('ES3')}} | |
{{SpecName('ES5.1', '#sec-12.6.3', 'for statement')}} | {{Spec2('ES5.1')}} | |
{{SpecName('ES6', '#sec-for-statement', 'for statement')}} | {{Spec2('ES6')}} | |
{{SpecName('ESDraft', '#sec-for-statement', 'for statement')}} | {{Spec2('ESDraft')}} |
{{Compat("javascript.statements.for")}}