[TIL / Deep Dive] 제어문

Changyun Go·2022년 2월 7일
0
post-thumbnail

「모던 자바스크립트 Deep Dive」를 읽고 새롭게 알게 된 내용

if...else 문 vs 삼항 조건 연산자

  • 조건에 따라 단순히 값을 결정하여 변수에 할당하는 경우에는 삼항 조건 연산자
  • 조건에 따라 실행해야 할 내용이 복잡하여 여러 줄의 문이 필요할 경우에는 if...else 문

switch 문

switch 문은 참, 거짓보다 다양한 case에 따라 실행할 코드 블록을 결정할 때 사용한다.

  • 가능하면 if...else 문으로 해결하고 가독성이 더 좋을 경우에만 사용한다.
switch (표현식) {
  case 표현식1:
    switch 문의 표현식과 표현식1이 일치하면 실행될 문;
    break;
  case 표현식2:
    switch 문의 표현식과 표현식2가 일치하면 실행될 문;
    break;
  **default**:
    **switch 문의 표현식과 일치하는 case 문이 없을 때 실행될 문**;
}

만약 case 문의 마지막에 break 문을 사용하지 않으면

var month = 4;
var monthName;

switch (month) {
  case 1: monthName = 'January';
  case 2: monthName = 'February';
  case 3: monthName = 'March';
  case 4: monthName = 'April';
  case 5: monthName = 'May';
  case 6: monthName = 'June';
  case 7: monthName = 'July';
  case 8: monthName = 'August';
  case 9: monthName = 'September';
  case 10: monthName = 'October';
  case 11: monthName = 'November';
  case 12: monthName = 'December';
  default: monthName = 'Invalid month';
}

console.log(monthName); // Invalid month

switch 문이 끝날 때까지 모든 case 문을 실행한다. 이를 fall through라 한다.

fall through의 활용

var year = 2000;
var month = 2;
var days = 0;

switch (month) {
  case 1: case 3: case 5: case 7: case 8: case 10: case 12:
    days = 31;
    break;
  case 4: case 6: case 9: case 11:
    days = 30;
    break;
  case 2:
    days = ((year % 4 === 0 && year % 100 !== 0) || (year % 400 === 0)) ? 29 : 28;
    break;
  default:
    console.log('Invalid month');
}

console.log(days); // 29

폴스루를 활용해 여러 개의 case 문을 하나의 조건으로 사용할 수 있다.

continue 문

  • if 문 내에서 실행할 코드가 길다면 continue 문을 사용하여 들여쓰기가 깊어지는 것을 막을 수 있다.
var string = 'Hello World.';
var search = 'l';
var count = 0;

for (var i = 0; i < string.length; i++) {
  if (string[i] === search) {
    count++;
    // code
    // code
    // code
  }
}

위와 같은 코드에 continue 문을 사용하지 않으면 if 문 내에 코드를 작성해야 한다.

for (var i = 0; i < string.length; i++) {
  if (string[i] !== search) continue;

  count++;
  // code
  // code
  // code
}

continue 문을 사용하면 if 문 밖에 코드를 작성할 수 있다.

Reference


  • 이웅모, 「모던 자바스크립트 Deep Dive」, 위키북스(2020), p93-p106

0개의 댓글