08.1. 블록문, 조건문

Block Statement, Conditional Statement

블록문

블록문은 0개 이상의 문을 중괄호로 묶은 것으로, 코드 블록 또는 블록이라고 부르기도 합니다.

Key Point💡

자바스크립트는 블록문을 하나의 실행 단위로 취급합니다.

블록문은 단독으로 사용할 수도 있으나, 일반적으로 제어문이나 함수를 정의할 때 사용하는 것이 일반적입니다. 문의 끝에 ;을 붙이는 것이 일반적입니다. 하지만 블록문은 언제나 문의 종료를 의미하는 자체 종결성을 갖기 떄문에 블록문의 끝에는 세미콜론을 붙이지 않습니다.

// 블록문
{
  var foo = 10;
}

// 제어문
var x = 1;
if (x < 10) {
  x++;
}

// 함수 선언문
function sum(a, b) {
  return a + b;
}

조건문

조건문은 주어진 조건식의 평가 결과에 따라 코드 블록의 실행을 결정한다.

Key Point💡

조건식은 불리언 값으로 평가될 수 있는 표현식이다 .

if ... else 문

if ... else문은 주어진 조건식(불리언 값으로 평가될 수 있는 표현식)의 평가 결과 즉, 논리적 참 또는 거짓에 따라 실행할 코드 블록을 결정합니다.

if (조건식) {
  // 조건식이 참이면 이 코드 블록을 실행합니다.
} else {
  // 조건식이 거짓이면 이 코드 블록이 실행됩니다.
}
  • 만약 조건식이 불리언 값이 아닌 값으로 평가되면 자바스크립트 엔진에 의해 암묵적 불리언 값으로 강제 변환되어 실행할 코드 블록을 결정합니다.

Key Point💡

조건식의 조건을 늘리고 싶으면 else if 문을 사용합니다.

if (조건식1) {
  // 조건식1 이 참이면 이 코드 블록을 실행합니다.
} else if (조건식2) {
  // 조건식 2가 참이면 이 코드 블록을 실햅합니다.
} else {
  // 조건식1과 조건식2가 모두 거짓이면 이 코드 블록이 실행됩니다.
}
  • 대부분의 if...else문은 삼항 조건 연산자로 바꿔 쓸 수 있습니다.

// x가 짝수면 result 변수에 문자열 '짝수'를 할당하고, 홀수이면 문자열 '홀수'를 할당한다.
var x = 2;
var result;

if (x % 2) {
  // 2 % 2 는 0이다. 이때, 0은 falsy값으로 false로 암묵적 강제 변환된다.
  result = "홀수";
} else {
  result = "짝수";
}

console.log(result); // 짝수

// 삼항 연산자로 변환

// 0은 false로 취급되면서 : 뒤의 조건의 결과를 평가되어 할당하게 됩니다.
result = x % 2 ? "홀수" : "짝수";
console.log(result); // 짝수

Key Point💡

삼항 조건 연산자는 값으로 평가되는 표현식을 만듭니다. 따라서, 값처럼 사용할 수 잇기 때문에 변수에 할당할 수 있습니다. 하지만, if...else문은 표현식이 아닌 문입니다. 따라서, if...else문은 값처럼 사용할 수 없기 때문에 변수에 할당할 수 없습니다.

switch 문

switch문은 주어진 표현식을 평가하여 그 값과 일치하는 표현식을 갖는 case문으로 실행 흐름을 옮깁니다. case 문은 상황을 의미하는 표현식을 지정하고 콜론으로 마칩니다 .그리고 그 뒤에 실행할 문들을 위치시킵니다. 만약 case가 없다면 default 문으로 이동합니다.

  • default문은 선택사항으로 사용할수도 있고 사용하지 않을수도 있습니다.

switch (표형식) {
  case 표현식1:
    // switch 문의 표현식과 표현식1이 일치하면 실행될 문
    break;
  case 표현식2:
    // switch 문의 표현식과 표현식 2가 일치하면 실행될 문
    break;
  default:
  // switch 문의 표현식과 일치하는 case문이 없을 때 실행될 문
}
  • if...else 문의 조건식은 불리언 값으로 평가되어야 하지만, switch문의 표현식은 불리언 값보다는 문자열이나 숫자 값인 경우가 많다.

  • break문이 없으면 코드 블록을 탈출하지 않고, 밑의 조건들을 재할당한 후에 마지막으로 default의 결과를 재할당한 결과가 출력됩니다.

Key Point💡

if...else문은 논리적 참, 거짓으로 실행할 코드 블록을 결정합니다. switch문은 논리적 참, 거짓보다는 상황(case)에 따라 실행할 코드블록을 결정할 떄 사용합니다.

요약

  • 블록문은 0개 이상의 문을 중괄호로 묶은 것으로, 코드 블록 또는 블록이라고 부르기도 합니다.

  • 조건문은 주어진 조건식의 평가 결과에 따라 코드 블록의 실행을 결정한다.

  • 삼항 조건 연산자는 값처럼 사용할 수 잇기 때문에 변수에 할당할 수 있습니다.

  • if...else문은 표현식이 아닌 문으로 값처럼 사용할 수 없어 변수에 할당할 수 없습니다.

Last updated