갑자기 만난 호이스팅

binary·2022년 4월 26일
2
post-thumbnail

갑자기 만난 호이스팅

function returnWordWithJoy(word) {
  if (typeof word !== 'string') {
    return 'wrong type';
  } else {
    return word + '!';
  }
}

문자열을 인자로 받아서 느낌표를 붙여서 리턴해주는 함수 returnWordWithJoy 가 있습니다. 함수 returnWordWithJoy 의 첫 번째 인자로 문자열 "I love coding" 을 넣어서 호출하고, 그 결과값을 변수 word에 할당하세요.


returnWordWithJoy 함수는 파라미터로 받은 word가 string 인지 확인하고, 맞다면 "!" 를 붙여 반환한다.

let word = returnWordWithJoy("I love coding");

이러한 코드를 추가해주면 I love coding! 과 같은 문자열이 반환될 것이라고 예상된다.

그래서 이 코드를 어느 위치에 작성해야 될까?

let word = returnWordWithJoy("I love coding");

function returnWordWithJoy(word) {
  if (typeof word !== 'string') {
    return 'wrong type';
  } else {
    return word + '!';
  }
}

페어 프로그래밍 중 나의 페어는 맨 첫줄에 작성하면 된다고 했다.

근데 함수 선언보다 함수 호출이 먼저 있어도 되나? 라는 궁금증이 생기자마자 그놈의 호이스팅이 떠올랐다.

그래서 호이스팅이 뭐더라 ❓

자바스크립트 엔진은 코드를 실행하기 전에 모든 선언들을 스코프에 등록한다.

선언된 변수와 선언된 함수들이 등록되어 있기 때문에 선언보다 참조나 호출이 먼저 나와도 오류 없이 동작한다.

변수 선언과 함수 선언이 해당 스코프의 최상단으로 끌어 올려진 것 같은 현상 을 호이스팅이라고 한다.

let word = returnWordWithJoy("I love coding");

function returnWordWithJoy(word) {
  if (typeof word !== 'string') {
    return 'wrong type';
  } else {
    return word + '!';
  }
}

다시 코드로 돌아가서 실행 해보자 !

함수 선언보다 함수 호출을 먼저 했지만, 함수 선언문이 맨 위로 올라간 것 마냥 오류가 나지 않는다.

참고 👉 호이스팅에 대한 오해와 진실
참고 👉 MDN : 호이스팅


이 염병할 호이스팅새끼 면접 때 자주 물어본다는 글을 본 적이 있다.
예전에 면접에서 면접관이 호이스팅에 대해서 물은 적이 있다. 면접 보는 사람들 그 누구도 대답하지 못했고, 나한테는 안 물어봤다. 아 시발 나는 애초에 뽑을 생각이 없었구나 ㅠ 우울해하면서 호이스팅에 대해 공부했던 적이 있었다.

역시 적당한 우울은 뭔가에 도움이 된다.


혹시나 잘못된 정보가 있다면 댓글로 알려주세요 ! 저의 성장의 큰 도움이 될 것 같습니다.🌱

0개의 댓글