[자바스크립트 Deep Dive] 08장. 제어문

lemythe423·2023년 7월 1일
0

제어문

조건에 따라 코드 블록을 (반복)실행할 때 사용

1. 블록문

block statement or compount statement

  • 일반적으로 제어문이나 함수를 정의할 때 사용
  • JS는 블록문을 하나의 실행 단위로 취급
  • 블록문문 자체 종결성은 가지기때문에 세미콜론(;)을 붙이지 않음
// 제어문
var x = 1; 
if (x<10) {
  x ++;
}

2. 조건문

conditional statement

  • 주어진 조건식의 평가 결과에 따라 어떤 코드 블록을 선택할 것인지 결정
  • 조건식은 불리언 값으로 평가될 수 있는 표현식

2.1 if~else 문

  • 평가 결과가 true인 경우와 false인 경우에 따라 실행될 블록이 선택됨
  • 조건식이 불리언 값이 아니라면 암묵적 타입 변환에 의해 불리언 값으로 변경되어 평가
if (조건식) {
  // true일 때 실행
} else {
  // false일 때 실행
}

if ~ else문은 삼항 조건 연산자로 바꿔 사용 할 수 있음

var x = 2;
var result; 

if (x%2) {
  result = '홀수';
} else {
  result = '짝수';
}

// 삼항 조건 연산자
var result = x%2 ? '홀수' : '짝수';
  • 삼항 조건 연산잔느 값으로 평가되는 표현식을 만ㄷ름
  • 값으로 사용할 수 있으므로 변수에 할당 가능

2.2 switch 문

  • 주어진 표현식의 값과 일치하는 표현식을 갖는 case문 블록을 실행
  • 주어진 표현식의 값이 숫자나 문자열인 경우
  • break문을 사용하지 않으면 일치하는 case 이후의 모든 case 문 블록이 실행됨
  • default문 이후에는 break를 생략
switch(표현식) {
  case 표현식1:
    // 표현식1과 일치할 때
    break;
  case 표현식2:
    // 표현식2와 일치할 때
    break;
  default:
    // 일치하는 게 없을 때
}

3. 반복문

  • 조건식의 평가 결과가 참인 코드 블록을 반복 실행

3.1 for 문

  • 조건식이 거짓으로 평가될 때까지 코드 블록 반복
  • 변수 선언문은 최초 한 번만 실행되며
  • 증감식->조건식의 순서로 계속해서 반복되다 조건식을 만족하지 못할 경우 for문이 종료됨
for (변수 선언문; 조건식; 증감식) {
	// 조건이 참인 경우 실행될 내용
}

for (var i = 0; i < 2; i++){
  console.log(i);
}

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

3.2 while 문

  • 조건식 평가 결과가 참이면 코드 블록
  • 무한루프의 경우 if문으로 탈출 조건을 만들고 break를 사용하여 탈출
var count = 0;

while (count < 3){
	console.log(count);
  	count++;
}

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

3.3 do...while 문

  • 코드 블록을 먼저 실행하고 조건식 평가
var count = 0;

do {
	console.log(count);
  	count++;
} while(count < 3);

4. break 문

  • 레이블 문과 반복문의 코드 블록을 탈출
  • 레이블 문의 경우 break 문에 레이블 식별자 지정 -> 이외에는 권장 ❌
// 중첩된 for문 탈출하기 : 레이블 식별자 사용
outer: for (var i = 0; i<3; i++) {
  for (var j = 0; j<3; j++) {
  	if (i+j==3) break outer;
  }
}

5. continue 문

  • 반복문의 코드 블록 실행을 중단하고 반복문의 증감식으로 실행 흐름을 이동
  • 반복문을 탈출하진 않고 아래 코드를 실행하지 않고 증감식으로 바로 이동하고 싶을 때 사용
  • 뒤이어 실행되어야 할 내용이 길다면 continue를 사용해 코드가 한 단계 더 깊어지는 것을 방지할 수 있음
var string = 'Hello World.';
var search = 'l';
var count = 0;

for (var i = 0; i < string.length; i++){
  	// 일치하지 않을 경우 바로 증감식
	if(string[i] !== search)continue;
  	// 일치할 경우 count 증가
  	count++;
}
profile
아무말이나하기

0개의 댓글