1부터 10까지 로그를 찍을 때 코드를 어떻게 짤까? 절대적 양이 적다면 다음처럼 하나씩 하드 코딩할 수도 있겠지만 감당할 수 없는 양이라면 반복문을 쓰면 된다.
반복문은 동일한 작업을 여러 번 반복해준다.
일반적으로 가장 많이 활용되는 반복문은 for이다. for문은 세미콜론으로 구분하며 세 부분으로 나눌 수 있다. 첫 번째 부분에는 초기값을 설정한다. 처음 반복문에 진입할 때만 한 번 실행된다. 지금은 i라는 변수를 만들고 0이라는 변수를 넣어두었다.
두 번째 부분에는 조건을 적어둔다. 반복문이 돌면서 조건을 확인하고 false가 되면 멈춘다. 지금은 i가 10보다 적으면 true를 반환하게 해두었다.
세 번째 부분에는 반복문이 한 번 실행된 후 해야 할 작업을 명시한다. 지금은 i에 1을 더하면서 증가시키는 의미이다.
이렇게 되면 i가 최초에 0이고 10보다 작으므로 코드를 실행한다. i 값을 1 증가시켜주고 i가 10보다 작으므로 또다시 코드를 실행한다. 이 작업을 반복하는 것이다.
정리하자면 초기 값을 지정하고, 조건이 true이면 코드를 실행하고, 괄호(세 번째 부분)의 작업을 진행한다. 또 조건을 확인하고, 코드를 실행하고, 값을 증가시켜준다. 나중에 조건이 false가 되면 반복문을 빠져나온다.
코드로 확인해보자. 초기 값은 0으로 지정하고 i가 10보다 작으면 i를 증가시켜준다. 실행해 보면 0부터 9까지 차례대로 찍힌다.
다음은 while 반복문이다. 이렇게 작성할 수 있다. while 다음 괄호에 조건을 입력한다. 지금은 i가 10보다 작으면 계속 반복하라고 알려주고 있다. 그런데 이 상태로 코드를 실행하면 안 된다. 왜냐하면 i는 계속 0이기 때문에 무한 반복하고, 그러면 브라우저는 뻗어버린다.
해결하려면 i를 증가시키는 코드를 추가하면 된다.
실제 코드로는 이런 식으로 사용할 수 있다. 최초의 i는 0이다. 10보다 작다는 조건을 만족하므로 코드를 실행한다. 코드 실행을 마치면 i를 1 증가시키고, 다시 조건을 확인한 후, 반복해서 실행한다. i가 9까지 동일한 작업을 하고, 10이 되면 반복문을 빠져나오게 된다.
다음은 do.. while 반복문이다. while과 비슷한데 조건문을 아래로 옮길 수 있다. i가 10보다 작으면 do 내부의 코드를 실행하는 방식이라 크게 다르지 않다.
어떤 차이가 있을까? do.. while의 코드 순서를 보면 일단 코드를 실행하고 조건을 체크하고 있다. 그러니까 적어도 한 번은 실행한다는 게 while과의 가장 큰 차이이다.
반복문을 빠져나오는 기능을 알아보겠다. break는 만나는 순간 즉시 코드 실행을 멈추고 해당 반복문을 빠져나온다. continue는 코드 실행을 멈추는 것까지는 동일하지만 반복문을 빠져나오지는 않고 다음 반복으로 점프한다.
코드로 알아보자. 참고로 while(true)는 무한 반복되기 때문에 조심해서 사용해야 한다. 지금 이 코드는 break를 만날 때까지 계속 반복한다. break문을 만나려면 answer가 false가 되어야 한다. "계속할까요?"라고 물어보고 확인을 누르면 계속 반복하고, 취소를 누르면 answer에 false가 들어가므로 break문을 만나게 된다. 그러면 반복이 끝난다. 이처럼 무한 반복문은 특정 조건이 되었을 때 break 해주는 게 무척 중요하다.
다음은 continue를 이용해 짝수만 찍어보는 코드이다. if에 i%2라고 적어서 2로 나눴을 때 나머지가 1이면 if문을 통과하게 한다. 코드를 살펴보면 우선 최초의 i는 0이다. 0을 2로 나누면 나머지가 0이기 때문에 continue문을 만나지 못하고 콘솔을 찍는다. 이후에는 값이 1로 증가되고, 1을 2로 나누면 나머지가 1이 되어서 continue문을 만나게 된다. 그러면 로그를 찍지 않고 이 continue문에서 바로 다음 작업으로 진행된다. 이 과정을 반복하고 결국 짝수만 남는다. 참고로 명확한 횟수가 정해져 있을 때는 for문을, 그게 아니라면 while를 사용하는 게 좋다. 한편 do.. while은 거의 쓰이지 않는다. 반복문은 코드를 줄이는 아주 좋은 방법 중 하나이다. 익숙해질 때까지 코드를 만들어보자.
출처: 코딩앙마, 자바스크립트 기초 강좌 #8 - 반복문(for, while, do while)