0개 이상의 문을 중괄호로 묶은 것으로, 코디 블록 또는 블록이라고 부르며, 블록문 끝에는 언제나 세미콜론을 붙이지 않음(자체 종결성)
주어진 조건식의 평가 결과에 따라 블록문의 실행을 결정하는 것으로, 불리언 값으로 평가될 수 있는 표현식
if (조건식1) {
// 조건식1가 true 일 경우, 실행
} else if (조건식 2) {
// 조건식2가 true 일 경우, 실행
} else {
// 조건식1과 조건식2가 모두 거짓이면, 실행
}
조건식의 평가 결과가 참인 경우 코드 블록을 실행하며, 조건식이 거짓일 때까지 반복됨
(1) for 문
: 조건식이 거짓으로 평가될 때까지 코드 블록을 반복 실행하며, for 문 내에 for 문을 중첩해서 사용할 수 있음(중첩 for 문)
for (초기화식; 조건식; 증감식) {
조건식이 참인 경우 반복 실행될 문;
}
(2) while 문
: 주어진 조건식의 평가 결과가 참이면 코드 불록을 계속해서 반복 실행하며, for 문은 반복 횟수가 명확할 때 주로 사용하고, while 문은 반복 횟수가 불명확할 때 주로 사용함
var count = 0;
// count가 3보다 작을 때까지 코드 블록을 계속 반복 실행
while (count < 3) {
console.log(count); // 0 1 2
count++;
}
- 평가 결과가 언제나 참이면 무한루프가 되며, 무한루프에서 탈출하기 위해서는 코드 블록 내에 if 문으로 탈출 조건을 만들고 break 문으로 코드 블록을 탈출함
var count = 0;
// 무한루프
while (true) {
console.log(count);
count++;
// count가 3이면 코드 블록을 탈출
if (count === 3) break;
} // 0 1 2
(3) do ... while 문
: 코드 블록을 먼저 실행하고 조건식을 평가하며, 무조건 한 번 이상 실행됨
var count = 0;
// count가 3보다 작을 때까지 코드 블록을 계속 반복 실행
do {
console.log(count); // 0 1 2
count++;
} while (count < 3);
(4) break 문
: 레이블 문, 반복문, switch 문의 코드 블록 외에 break문을 사용하면 SyntaxError(문법 에러)가 발생함
// outer라는 식별자가 붙은 레이블 for 문
outer: for (var i = 0; i < 3; i++) {
for (var j = 0; j < 3; j++) {
// i + j === 3이면 외부 for 문을 탈출한다.
if (i + j === 3) break outer;
}
}
console.log('Done!');
(5) continue 문
: 반복문의 코드 블록 실행을 현 지점에서 중단하고 반복문의 증감식으로 실행 흐름을 이동시키며, break 문과 달리 반복문을 탈출하지 않음
for (var i = 1; i <= 6; i++) {
for (var j = 1; j <= 6; j++) {
if (i + j === 6) console.log([${i}, ${j}]
); }
}
* 결과값
[1, 5][2, 4][3, 3][4, 2][5, 1]
var string = 'Hello World.';
var index;
// 문자열은 유사배열이므로 for 문으로 순회할 수 있다.
for (var i = 0; i < string.length; i++) {
// 문자열의 개별 문자가 'l'이면
if (string[i] === 'l') {
index = i;
break; // 반복문을 탈출한다.
}
}
console.log(index); // 2
// 참고로 String.prototype.indexOf 메소드를 사용해도 같은 동작을 한다.
console.log(string.indexOf('l')); // 2
var string = 'Hello World.';
var search = 'l';
var count = 0;
// 문자열은 유사배열이므로 for 문으로 순회할 수 있다.
for (var i = 0; i < string.length; i++) {
// 'l'이 아니면 현 지점에서 실행을 중단하고 반복문의 증감식으로 이동한다.
if (string[i] !== 'l') continue;
count++; // continue 문이 실행되면 이 문은 실행되지 않는다.
}
console.log(count); // 3
// 참고로 String.prototype.match 메소드를 사용해도 같은 동작을 한다.
console.log(string.match(/l/g).length); // 3
// 위 예제의 for 문은 다음 코드와 동일하게 동작함
for (var i = 0; i < string.length; i++) {
// 'l'이면 카운트를 증가시킨다.
if (string[i] === 'l') count++;
}
// continue 문을 사용하지 않으면 if 문 내에 코드를 작성해야 한다.
for (var i = 0; i < string.length; i++) {
// 'l'이면 카운트를 증가시킨다.
if (string[i] === 'l') {
count++;
// code
// code
// code
}
}
// continue 문을 사용면 if 문 밖에 코드를 작성할 수 있다.
for (var i = 0; i < string.length; i++) {
// 'l'이 아니면 카운트를 증가시키지 않는다.
if (string[i] !== 'l') continue;
count++;
// code
// code
// code
}