제어문은 조건과 반복까지 포함되는 단어로 많은 종류가 있다.
if
,else
문으로 조건과 실행문으로 되어있다2가지 모두 while의 조건이 true가 된다면 반복되는 형식으로 do
가 없다면 while문 안 실행문들이 실행되고 do
를 작성한다면 do
안의 실행문들이 실행된다.
for
문이다while
문을 생각해보면 보통 while
문을 사요할 때 ()
안 조건과 종료조건들 밖에 설정해야하는데
const i = 0;
while(i<5) {
console.log('wihle>>',i)
i += 1
}
이처럼 const i = 0
으로 종료 조건에 사용할 변수를 따로 선언하고 ( )
안쪽에 종료 조건을 쓰고 i += 1
을 이용해 종료 조건에 올 수 있도록 실행할 문을 작성해야한다.
그럼 만약 while
문 안에서 실행될 실행 코드들이 엄청 많아진다면 while
문 밖에서 작성한 조건 변수에 조건 종료를 위해 실행될 실행문도 저 아래 있다면 찾기가 많이 힘들어질 것이다.
그럼 어차피 이 3개는 반복문이 실행되기 위한 것들이니 한곳에 모여 작성하는 것이 더 좋을 것 같다 라는 시점으로
for(조건변수선언 ; 종료 조건문 ; 조건 false시 실행할 실행문){실행코드}
로 한꺼번에 묶어놓은 것이다.
예시코드
const arr = [1,2,3,4,5]
for(let i=0; i<arr.length; i++){
console.log(arr[i])
}
for
문을 작성 할 때는 종료조건만도 가능하다 for(;!didEnd;){}
처럼도 가능
반복문의 종류로는 for문
, for...in
, for...of
, forEach
등이 있고 Array 고차함수로 map,filter,reduce...
등 많은데 앞서 한번 정리 한 적이 있다
반복문을 사용할 때 continue
와 break
,return
등을 사용할 수 있는데
continue
: 현재 반복을 더이상 실행하지 않고 다음 반복문 실행으로 넘어가는 것break
: 반복문이나 조건문등을 종료하는것(switch.. case문에서 쓰이기 때문)return
: 아예 종료하는 것이다. 함수 안에서 반복문을 사용할 때 return
을 조건에 맞춰 추가해 놓으면 반복문만 종료되는 것이 아닌 함수 자체를 종료 시킬 수 있다let i = 1
switch(i) {
case 0 : console.log('i는 0입니다');
break;
case 1 : console.log('i는 1입니다');
break;
case 2 : console.log('i는 2입니다');
break;
default : console.log(i)
}
i
값이 무엇이냐에 따라 i값에 맞는 case문을 실행시키는 것이 switch case문인데 주의할 것으론 break
를 꼭 넣어줘야 하는 것이다.
break
를 넣지 않을 경우 모든 해당 조건 case문 이후로의 모든 case문을 지나가며 실행시키게 되니 조심하자
또한 defalut
를 집어넣어 모든 case조건에 부합하지 않을 경우 기본 값으로 출력될 부분도 구현해 놓자.
주의할 점
switch...case문을 사용할 때 변수를 사용해야 한다면 조심해야 하는 부분이 있다
위 코드를 살펴보면 switch...case문의{}
블럭은 어디서부터 어디까지 일까? 각각의 case까지 일까?
아니다 case문에는 코드에서도 안 써있듯이{}
이 존재 하지 않고 전체를 감싸고 있는switch(i) {}
이 부분이 하나의 블럭으로 인정되기 때문에 블럭스코프인let
과const
를 사용할 경우 다른 case의 실행문에도 모두 포함 될 수 있다는 부분을 조심해야 한다.