반복문 loop: 동일한 작업을 여러번 반복
1부터 10까지의 console.log를 찍으라고 한다면
보이는 이미지와 같이 console.log(1);...cosole.log(10); 이런식으로 코드를 입력하면된다.
하지만 1부터 100까지나 1000까지의 로그를 찍으라고 하면 양이 방대해지므로
이럴때에는 반복문
을 사용하면된다!
반복문에는 다양한 종류가 있는데 어떤 것이 있는지 살펴보도록 하겠다!
For문은 ;(세미콜론)으로 구분하며 세부분으로 나눌 수 있다.
첫번째 부분(초기값 설정): 반복문에 진입할 때 처음, 1번만 실행된다.
지금은 i라는 변수를 만들고 0이라는 값을 넣어둠.
두번째 부분은 조건을 적는다.
반복문이 돌면서 조건을 확인하고 false가 되면 멈춘다.
지금은 i가 10보다 작으면 true를 변환하게 해둠.
세번째 부분: 반복문이 한번 실행 된 후 해야할 작업을 명시한다.
지금은 i에 1을 더하면서 증가시켜준다는 의미이다.
이렇게 되면 i가 최초에 0이고 i가 10보다 작으므로 코드를 실행한다.
그리고 i값을 1 증가시켜준다.
i=1일때
I가 10보다 작으므로 다시한번 코드를 실행한다. 또 i값을 1증가시켜준다.
이 작업을 반복한다.
<코드로 확인해보기>
⌨︎ 입력
초기값0으로 지정
i가 10보다 작으면 i를 증가시켜준다
💻 실행결과
0부터 9까지 찍힌것을 확인할 수 있다.
이번에는 i에다 1을 더해주었다
⌨︎ 입력
💻 실행결과
1부터 10까지 찍혔다.
이렇게 해도 위 코드와 똑같은 결과가 나온다!
⌨︎ 입력
💻 실행결과
혹은 i <11을 i <= 10 바꾸어도 동일한 결과를 나타낸다.
같은 의미이기 떄문이다.
⌨︎ 입력
💻 실행결과
While 반복문은 이렇게 작성할 수 있다.
While 다음 괄호에 조건을 입력한다.
지금은 i가 10보다 작으면 계속 반복하라고 알려주고 있다.
그런데 이 상태로 코드를 실행하면 안된다
i=0이기 때문에 무한반복하고 결국브라우저는 뻗어버린다.
해결하려면 어떻게 해야할까?
//코드 부분에 i를 증가시키는 코드를 추가하기
최초의 i는 0!
10보다 작다는 조건을 만족하므로 코드를 실행한다.
코드를 실행을 마치면 i를 1증가시키고 다시 조건을 확인한 후 반복해서 실행한다.
i가 9까지 동일한 작업을 마치고 10이 되면
반복문을 빠져나오게 된다!
다음과 같이 그저 코드를 반복할 뿐만 아니라 i를 1씩 증가시키는 코드를 추가로 작성해주었다.
이 코드가 실행되면 i는 0부터 시작해서 1씩 증가해 10에 도달하면 false가 되어
자동으로 반복문에서 빠져나갈 것이다!
따라서 결과는 다음과 같다.
0부터 9까지 1씩 증가하여 코드가 출력된것을 확인할 수 있다.
do while: while과 비슷한데 조건문을 아래로 옮길 수 있다.
i가 10보다 작으면 do 내부의 코드를 실행하는 방식이라 크게 다르지 않다.
어떤 차이가 있을까?
do while 코드순서를 보면
일단 코드를 실행하고 조건을 체크하는 것이므로
적어도 한번은 실행한다는게 while과 큰 차이점이다.
break와 continue는 반복문을 빠져 나가는 기능이다.
break: 만나는 순간 즉시 코드실행을 멈추고 해당 반복문을 빠져나옴
continue: 코드 실행을 멈추는 것 까진 동일하나 반복문을 빠져나오지는 않고
다음 반복으로 점프한다.
⌨︎ break의 경우
🔖 while(true):무한반복 조심해서 사용하기!
💻 실행결과
지금 이 코드는 break를 만날 때 까지 계속 반복한다.
break문을 만나려면 이 answer가 false가 되어야한다.
'계속 할까요?' 라고 물어보고 확인을 누르면 계속 반복하고
취소를 누르면 answer에 false가 들어가기 때문에 break문을 만나게 된다.
그럼 반복이 끝난다! (반복문에서 빠져나옴)
이처럼 무한 반복문은 특정조건이 되었을 때 break해주는 것이 무척 중요하다.
다음은 continue를 이용해서 짝수만 찍어보도록 하겠다.
⌨︎ continue 경우
💻 실행결과
🔖 i%2: 2로 나누었을 때 나머지가 1이면 이 if문을 통과한다.
최초의 i는 0이다.
0을 2로 나누면 나머지가 0이기 때문에 continue문를 만나지 못하고 console을 찍는다.
i가 1로 증가되었고
1을 2로 나누면 나머지가 1이기 때문에 continue문을 만난다.
그러면 log를 찍지 않고 이 continue문에서 바로 다음작업으로 진행된다
이 과정을 반복하고 결국 짝수만 남는다.
(참고-코딩앙마의 경우… )
명확한 횟수가 정해져 있다 ->for문
그게 아니라면 ->while
Do while은 별로 사용 x