호이스팅

cracKey·2022년 7월 5일
1
post-thumbnail

호이스팅

먼저 단어 hoist는 끌어올리다 라는 뜻이 있다(또는 승강장치)
내가 처음 Javascript를 배웠을 때 변수 선언은 var이 였다.
나중에 군전역 후 Javascript를 다시 접할때는 const와 let으로 바뀌어있었다.
그 이유는 호이스팅 때문이였는데 호이스팅이란..


JavaScript에서 호이스팅(hoisting)이란, Javascript는 인터프리터(순서대로 한 줄씩 작동)가 변수와 함수의 메모리 공간을 선언 전에 존재한다면 미리 할당하는 것을 의미하는데. 할당된 var의 값은 undefinded다.

JavaScript는 코드 실행 전 스코프에 선언을 변수를 등록하는데 여기서 이미 선언은 등록이 되어버린다. 즉 선언은 끌어올려지지만 값은 할당되지않는다.

console.log(a);
//undefiend

var a = 1;

let과 const

let과 const로 선언한 변수도 호이스팅 대상이지만, var와 달리 호이스팅 시 undefined로 변수를 초기화하지는 않는다. 따라서 변수의 초기화를 수행하기 전에 읽는 코드가 먼저 나타나면 예외(오류)로 발생


함수선언

  • 함수 선언식으로 선언된 함수는 호이스팅이 된다.
  • 함수 표현식으로 선언된 함수는 호이스팅이 되지 않는다.
profile
키보드가 부서지게 / 개발공부노트

0개의 댓글