48일차 - 호이스팅, switch문

김민찬·2021년 6월 26일
0

취업으로의 여정

목록 보기
49/196

주말을 맞이해서 복습을 하는 시간을 가졌다. 오늘 정리할 주제들은 제목과 같이 호이스팅, switch문이다.

호이스팅은 면접에서도 자주 물어보는 중요한 개념이라고 한다.

호이스팅(hoisting)은 var변수나 function declaration(함수 선언)들이 자동적으로 제일 위로 올라가는 것이라고 생각하면 된다. 호이스팅이 된 이후 부터 코드가 나타난 순서대로 자동적으로 실행이 된다.

예를들어 함수 표현식으로 매개변수 두 개를 더해서 출력하는 식을 아래와 같이만들면 참조에러 메시지가 나온다.

add(1, 2);
let add = function(a, b) {
    console.log(a+b)}; // ReferenceError: add is not defined

함수 표현식은 호이스팅이 되지 않기 때문에 첫 줄에서 add(1, 2)를 실행해야 되는데, 아직 add 함수가 표현되지 않았기 때문에 참조를 못하는 것이다.

add표현식을 함수 선언식으로 바꾼다면

add(1, 2); // 3
function add(a, b) {
    console.log(a+b)}; 

3이라는 결과가 출력된다. 함수 선언식은 자동적으로 제일 위로 올라가는 호이스팅이 일어나기 때문이다.
자바 스크립트는 위와 같은 코드를 아래와 같이 읽게된다.

function add(a, b) {
    console.log(a+b)};
add(1, 2); // 3

switch문은 복수의 if 조건문을 보기 좋게 바꾸는 역할을 한다.

switch문은 하나 이상의 case문으로 구성한다. default문도 있는데, 이것은 case에 부합되는 것이 하나도 없을때 기본값으로 지정하는 방법으로, if문에서 마지막 else문이라고 생각하면 편할 것이다.

let age = 27

if(age > 19 ) {
    alert( "22시 이후에도 피씨방을 이용할 수 있습니다." );
  } else if( age < 19 ){
    alert( "22시가 되었으니 귀가해주시기 바랍니다." );
  } else {
    alert( "둘 다 아니라면 올해 19세가 되셨겠군요." );
}

이런식으로 피씨방에서 알람창을 만들었다고 생각해보자.(마지막 문구는 default를 보여주기 위해 age=== 19로 할수도 있지만 바꿔서 넣었다.)

위의 if문이 실행되면 age가 19이상이니, "22시 이후에도 피씨방을 이용할 수 있습니다."라는 문장이 나올 것이다.

한번 주제인 switch로 바꿔서 써보겠다.

let age = 27

switch (age) {
  case ( age > 19 ):
   alert( "22시 이후에도 피씨방을 이용할 수 있습니다." );
   break;
 case( age < 19 ):
   alert( "22시가 되었으니 귀가해주시기 바랍니다." );
   break;
 default:
   alert( "둘 다 아니라면 올해 19세가 되셨겠군요." );
}

이런식으로도 가능하다는 얘기다.

profile
두려움 없이

0개의 댓글