JavaScript 반복문


반복문은 어떠한 조건이 참일 경우 블록 내부의 문장을 반복 실행해요. 자바스크립트의 반복문에는 while문, do…while문, for문 등이 있어요.

while 문

while문은 괄호 내의 조건식이 true일 경우 블록 내의 문장을 실행해요. 블록내의 문장을 모두 실행하고 나면 다시 괄호내의 조건식을 평가해서 조건식이 false가 아니라면 다시 실행되요. 만약 조건식이 false라면 블록을 벗어나고 while 문은 종료되죠.

while (조건식) {
}

while문을 사용할 때는 조건문을 false로 만들 수 있는 조건을 만드는 것이 중요해요, 그렇지 않으면 무한 루프에 빠질 위험이 많아요.

무한루프 - 반복문에서 어떠한 조건식이 계속 true로 평가되어, 반복문이 종료되지 않고 무한히 계속되는 것

var i = 0; 
while (i < 10) { 
  console.log(i); 
  i += 1; 
}

위의 코드를 실행하면 콘솔에 0부터 9까지 순서대로 출력되요. 만약 i의 값을 1씩 증가시켜주는 코드가 while 문 내부에 없으면 무한루프에 빠지게 되요.

do…while 문

do…while 문은 while문과 비슷해요. while 문을 실행 시키기 이전에 do{} 블록으로 둘러싼 부분의 문장은 무조건 실행 시키고 while문의 조건식을 이용해 반복여부를 판단해요.

do {
  // 한번 실행
} while (조건식);

그런데 do…while 문은 그렇게 많이 쓰이짆 않아요.

for 문

for문은 엄청 많이 써요. for 문의 괄호 내부는 세부분으로 나뉘어져 있어요.

for(초기값; 조건식; 증감식) {
  // statement
}

for 문이 실행되면 가장 처음 초기값을 한번 실행시켜요. 그리고 조건식을 확인해서 결과가 true일 경우 블록내의 문장을 실행시키고, 블록이 끝나면 증감식을 실행해요. 그리고 다시 조건식과 비교해서 true면 블록내의 문장을 실행시켜요. 이렇게 조건식의 결과가 false가 될 때까지 블록 내부의 문장을 반복 실행하는 것이 for 문이에요.

for(var i=0; i<10; i++) {
  console.log(i);
}

in 연산자

in 연산자는 특정 객체에 속성이 존재하는지를 검사할 때 사용하는 연산자에요. in 연산자를 사용하면 배열이나 객체 내에서 원하는 프로퍼티가 있는지 확인할 수 있어요.

var arr = [1,2,3,4,5];
console.log(3 in arr);          //=> true

var obj = {name: 'Alice', age: 7};
console.log('name' in obj);     //=> true

in 연산자는 주로 for…in 구문을 이용해서 객체나 배열의 각 원소를 순서대로 처리할 때 사용되요.

for…in 루프

for…in 문은 객체 내부의 프로퍼티에 대해 순차적으로 루프를 실행하도록 해줘요.

for (변수 in 객체) {
  // statement
}

for…in 문 사이의 변수에는 객체의 프로퍼티명이 순차적으로 저장되므로 이를 이용해서 블록내에서 여러가지 작업을 할 수 있어요.

var alice = { name: 'Alice', gender: 'Femail', age: 7 };

for(var prop in alice) {
  console.log(prop + ": " + alice[prop]);
}

break 문

break문은 switch 문 혹은 반복문에서 빠져나오기 위해 사용합니다. 예를 들어 for 문 도중 특정 조건을 만족할 경우 더이상 반복을 실행하지 않고 중지하고 싶을 때 사용할 수 있습니다.

for(var i=0; i<10; i++) {
  if (i === 3) break;
  console.log(i);
}

위의 경우 i의 값이 3이 되는 경우 for문은 종료됩니다. 따라서 결과는 0, 1, 2를 순차적으로 출력한 후 종료됩니다.

continue

continue는 반복문 내부에서 처리를 건너뛰기 위해서 사용합니다. 옐르 들어 fo문으로 순회 도중 특정 조건을 만족할 경우 처리를 건너뛰고 싶을 때 사용할 수 있습니다.

for(var i=0; i<10; i++) {
  if (i === 3) continue;
  console.log(i);
}

위의 경우 i의 값이 3인 경우 곧바로 for문 내부의 처리를 건너뛰고 다음 조건식을 평가합니다. 따라서 결과는 3을 제외하고 0부터 9까지의 숫자를 순차적으로 출력합니다.