08장 제어문

soyeon·2022년 1월 12일
1
post-thumbnail

8.2 조건문

🍧블록문 : 문을 {}중괄호로 묶은 것
🍧조건문 : 조건식의 평가 결과에 따라 블록의 실행을 결정함

8.2.1 if ... else 문

if(조건식) {
  // 조건식이 참일 때 실행
}else{
  // 조건식이 거짓일 때 실행
}

조건식은 불리언 값으로 평가되어야하고, 만일! 조건식이 불리언 값이 아닌 경우 암묵적으로 불리언 값으로 강제 변환됩니다.
대부분의 if...else 문은 삼항 조건 연산자로 바꿔쓸 수 있습니다.

조건식 ? 참일 때 실행 : 거짓일 때 실행

❗삼항 조건 연산자는 값으로 사용할 수 있기 때문에 변수에 할당할 수 있습니다.

8.2.2 switch 문

🍧swtich문 : 표현식 평가 → 값과 일치하는 표현식을 갖는 case 문으로 실행 흐름을 옮김

switch(표현식) {
  case 표현식1:
    switch //문의 표현식 = 표현식1이면 실행될 문
      break;
  case 표현식2:
    switch //문의 표현식 = 표현식2이면 실행될 문
      break;
  defalut:
      switch //문의 표현식과 일치하는 case 문이 없을 때 실행 (기본값 설정하기)

break가 뭔가요?

표현식과 case의 표현식이 일치하여 switch문이 실행되었다면.. 거기서 멈춰주어야합니다.
이 때 쓰는게 break입니다.
그렇지 않으면 얘가 브레이크 고장난 자동차마냥 블록이 끝날 때까지 실행해버림...(이걸 폴스루라고 한다)

if ... else vs switch 어느쪽이 더 좋을까요?

그냥 if ... else로 해결이 가능하면 if...else문을 씁시다.
조건이 너무 많아서 가독성이 구려지면 switch 사용합시다

8.3 반복문

for문, while문, do ...while 문이 있습니다.

8.3.1 for문

for (변수 선언문 or 할당문; 조건식; 증감식) {
  조건식이 참일 경우 반복 실행될 문;

실행되는 순서: 변수 선언문 or 할당문(1회)→조건식 →(조건식이 참일 경우)→ 코드블록 실행→증감식

❗ 변언 선언문, 조건식, 증감식 중 어떤 식도 선언하지 않으면 무한루프가 됩니다.

// 무한루프
for (;;) {...}

8.3.2 while 문

var count = 0;

//count가 3보다 작을 때까지 코드 블록을 계속 반복 실행한다
while (count < 3) {
  console.log(count); // 0 1 2 
  count ++

for 문과 다른점이 뭔가요

for 문은 반복 횟수가 명확할 때, while 문은 반복 횟수가 불명확할 때 자주 쓰입니다.

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

//무한루프
while(true){...}

8.3.3 do...while 문

🍧do...while문 : 코드 블록을 먼저 실행하고 조건식을 평가합니다.
조건식이 거짓이더라도 코드 블록은 무조건 한 번 이상 실행됩니다.

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

8.5 continue 문

🍧continue 문은 반복문의 코드 블록을 현 지점에서 중단하고 증감식으로 실행 흐름을 옮깁니다.
break 문처럼 반복문을 탈출하진 않습니다.

var string = 'hello world'
var search = 'l'
var count = 0;

// 문자열은 유사 배열
for(var i =0; i < string.length; i++) {
  // 'l'이 아닐 경우(조건식이 참일 경우) i++로 이동
  // 'l'일 경우(조건식이 거짓일 경우) count++로 이동
  if(string[i] !== search) continue;
  count++;//
}
console.log(count); //3

for 문으로 다시 쓰기

for (var i = 0; i <string.length; i++) {
  //'l'이면 카운트 증가
  if(string[i] === search) count ++;

걍 for문 쓸게

profile
공부중

0개의 댓글