JS - 제어문(조건문&반복문)

hoin_lee·2023년 10월 2일
1

TIL

목록 보기
224/236

제어문

제어문은 조건과 반복까지 포함되는 단어로 많은 종류가 있다.

조건문

  • if ... else ... : 우리가 흔히 아는 if,else문으로 조건과 실행문으로 되어있다
  • switch... case... : if처럼 조건을 걸지만 여러 조건들을 switch를 사용하면 if조건 if조건 if 조건 이런식으로 사용하는 것이아닌 하나의 switch문 안에 여러 조건들과 실행문을 한꺼번에 만들 수 있다

반복문

  • while(조건) {}
  • do {} while(조건)

2가지 모두 while의 조건이 true가 된다면 반복되는 형식으로 do가 없다면 while문 안 실행문들이 실행되고 do를 작성한다면 do안의 실행문들이 실행된다.

  • for 반복문 : 우리가 처음 코딩을 배울 때 가장 많이 사용하는 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...등 많은데 앞서 한번 정리 한 적이 있다

for문의 종류

반복문을 사용할 때 continuebreak,return등을 사용할 수 있는데

  • continue : 현재 반복을 더이상 실행하지 않고 다음 반복문 실행으로 넘어가는 것
  • break : 반복문이나 조건문등을 종료하는것(switch.. case문에서 쓰이기 때문)
  • return : 아예 종료하는 것이다. 함수 안에서 반복문을 사용할 때 return을 조건에 맞춰 추가해 놓으면 반복문만 종료되는 것이 아닌 함수 자체를 종료 시킬 수 있다

switch문 예시

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) {} 이 부분이 하나의 블럭으로 인정되기 때문에 블럭스코프인 letconst를 사용할 경우 다른 case의 실행문에도 모두 포함 될 수 있다는 부분을 조심해야 한다.

profile
https://mo-i-programmers.tistory.com/

0개의 댓글