for문
for 반복문은 어떤 특정한 조건이 거짓으로 판별될 때까지 반복한다.
for (begin; condition; step) { // ... 반복문 본문 ... }
for (let i = 0; i < 3; i++) { console.log(i); } // 0, 1, 2가 출력된다.
for문을 구성하는 요소
begin : i = 0 -> 반복문에 진입할 때 단 한 번 실행된다.
condition : i < 3 -> 반복마다 해당 조건이 확인된다. false이면 반복문을 멈춘다.
body : console.log(i) -> -condition이 truthy일 동안 계속해서 실행된다.
step : i++ -> 각 반복의 body가 실행된 이후에 실행된다.// for (let i = 0; i < 3; i++) console.log(i) // begin을 실행함 let i = 0 // condition이 truthy이면 → body를 실행한 후, step을 실행함 if (i < 3) { console.log(i); i++ } // condition이 truthy이면 → body를 실행한 후, step을 실행함 if (i < 3) { console.log(i); i++ } // condition이 truthy이면 → body를 실행한 후, step을 실행함 if (i < 3) { console.log(i); i++ } // i === 3이므로 반복문 종료
- break와 continue
1) break를 사용하면 언제든 원하는 때에 반복문을 빠져나올 수 있다.for (let i = 1; i < 10; i++) { if (i === 7) { break; // 7이 나오면 반복문을 끝내라 } console.log(i); } // 1, 2, 3, 4, 5, 6이 출력됨
2) continue는 현재 반복을 종료시키고 다음 반복으로 넘어가고 싶을 때 사용할 수 있다.
단 삼항연산자에서 사용 시 문법 에러를 일으킨다.for (let i = 1; i < 10; i++) { if (i === 7) { continue; // 구문을 재실행시킬 수 있어서 8부터 다시 반복문이 실행됨 } console.log(i); } // 1, 2, 3, 4, 5, 6, 8, 9가 출력됨
while문
while 문은 어떤 조건문이 참이기만 하면 문장을 계속해서 수행한다.
let i = 0; while (i < 3) { console.log( i ); i++; } // 0, 1, 2가 출력된다.
조건 (i<3)이 true이면 반복문이 코드가 실행된다. 즉 i< 3을 만족할 동안 i를 출력해준다.
do...while문
do...while 문은 특정한 조건이 거짓으로 판별될 때까지 반복한다.
let i = 0; do { console.log( i ); i++; } while (i < 3); // 0, 1, 2가 출력된다.
조건이 true인지 아닌지에 상관없이 본문을 최소한 한번이라도 실행하고 싶을 때 사용해야 한다.
- 대부분 do..while문 보다는 while문이 적합하다.
for...in문
객체에서 주로 사용하고, 객체의 속성들을 반복하여 작업을 수행할 수 있다.
객체 자료형에서 자료들을 하나씩 꺼내고 싶을 때 사용한다.let dakyung = { name: "dakyungOh", age: 27, dog: "kong", hobby: "javascript", }; for (const prop in dakyung) { console.log(prop, dakyung[prop]); } // name dakyungOh // age 27 // dog kong // hobby javascript
for...of문
각각의 고유한 특성의 값을 실행할 명령과 함께 사용자 지정 반복 후크를 호출하여, 반복 가능한 객체(array, string, map, set Dom등)를 통해 반복하는 루프를 만든다.
const array1 = ["dakyung", 27, "kong", "javascript"]; for (const element of array1) { console.log(element); } // dakyung // 27 // kong // javascript
let iterable = "boo"; for (let value of iterable) { console.log(value); } // "b" // "o" // "o"