while문 continue문

미마모코딩·2022년 3월 13일
0
post-thumbnail

오늘은 while문과 contunue문 label문에 대해 공부 할 것이다.

while 문

while문은 주어진 조건식의 평가 값이 참이면 코드블록을 계속 반복해 실행한다.

for 문은 반복 횟수가 명확할 때 주로 사용한다.

하지만 while문은 반복 횟수가 불명확할때 주로 사용한다.

또한 while문은 조건문의 값이 false가 되면 코드 블록을 실행하지 않고 종료한다.

조건식의 평가 결과가 불리언 값이 아니면 불리언 값으로 강제 변환하여 참과 거짓을 구분한다.

코드로 예를 들어보겠다.

<script>
var count = 0
 
 //count가 5보다 작을 때까지 코드블록을 반복 실행한다.
while (count < 5){
 console.log(count); // 0 1 2 3 4
 count++
}
</script>

조건식의 평가 결과가 언제나 참이면 무한루프가 된다.

무한루프란? 특정 코드가 무한으로 반복되는 걸 말한다.

<script>
while(true){
console.log("hello") //콘솔에 hello 무한반복
}
</script>

이러한 무한루프에서 탈출하기 위해선 코드블록 내부에 if 문으로 조건을 만들어 break 문으로 코드 블록을 탈출한다.

<script>
var count = 0;

//무한루프

while(true){
console.log(count)
count++
//count가 5가되면 코드 블록을 탈출한다.
if(count === 5) break;
}
//0 1 2 3 4
</script>

label 문

레이블 문이란 식별자가 붙은 문을 말한다.

foo:console.log("foo");

위 코드는 foo라는 레이블 식별자가 붙은 레이블 문이다.

레이블 문은 프로그램의 실행 순서를 제어하는 데 사용한다.

레이블 문을 탈출하려면 break 문에 레이블 식별자를 지정한다.

브레이크문을 만나면 코드블록이 끝난 다음줄로 이동한다.

레이블 브레이크를 하게되면 해당 하는 코드블록이 전부끝난 위치로 이동한다.

코드로 예를 들어보자.


<script>
// foo라는 식별자가 붙은 레이블 블록문
  foo : {
  console.log(1);
  break foo; // foo 라는 레이블 블록문 전체를 탈출한다.
  console.log(2)
  }
  console.log("done");
  </script>

코드 결과를 예측해보자.

예측을 했다면 출력 순서를 알아보자.

  1. foo라는 코드 블록이 실행되어 콘솔에 1출력
    2.레이블 브레이크문을 만나 {} 라는 코드블록 전체를 탈출한다.
    3.코드블록 전체를 탈출했기 때문에 콘솔에 done 출력

이렇듯 레이블 브레이크 구문을 사용하면 코드 블록 전체를 빠져나갈 수 있다.

continue 문

continue 문은 반복문의 코드 블록 실행을 현 지점에서 중단한다.

그리고 반복문의 증감식으로 실행 흐름을 이동시킨다.

코드로 예를 들어보자.

다음은 문자열에서 특정 문자의 개수를 세는 예다.

<script>
var string = "hello world"
var search = "l"
var count = 0 

for(var i = 0; i < string.length ; i ++){
if(string[i] !== search) continue //"l"이 아니면  현 지점에서 실행중단함
//그리고 반복문의 증감식으로 이동한다
count++ // continue문이 실행되면 이 문은 실행되지 않는다.
}
console.log(count) // 3
</script>

이코드의 동작 원리를 설명하겠다.

1. for문에서 string.length는 "hello world" 총 11개이다.(띄어쓰기 포함)
11개 보다 작을때까지 코드를 반복실행한다.

2. 조건식을 해석하면 ("hello world")라는 문자열에서 ("l") 엘을 찾았다면 카운트를 1씩 올리겠다라는 코드이다.

3. string을 한글자씩 검사해서 l을 만나지 못한다면 컨티뉴를 통해 증감식으로 string index의 숫자를 늘려 검사를 진행하는 구조이다.

4. l을 찾게되면 코드는 순차적으로 돌아가기에 카운트 ++를 하고 다시 포문이 돌게 된다 .

5. 결과적으로 hello world 의 l의 개수는 3개이기 때문에
콘솔로그 카운트에 3이 찍히게 된다.

컨티뉴문은 실행이 된 시점에서 반복문의 증감식으로 이동한다 .

컨티뉴가 실행되면 아래있는 코드는 실행되지 않는다.

이 점을 기억하고 코드를 작성하고 생각하자.

다음시간에는 타입 변환 , 단축 평가에 대해서 같이 공부해보자.

0개의 댓글