[JavaScript] 호이스팅

·2021년 12월 2일
0

호이스팅 - [MDN 문서]
변수의 선언과 초기화를 분리한 후 선언만 코드의 최상단으로 옮기는 것으로 말하곤함.
변수를 정의하는 코드보다 사용하는 코드가 앞서 등장할 수 있음.
선언과 초기화를 함께 수행하는 경우, 선언 코드까지 실행해야 변수가 초기화된 상태가됨.

변수의경우 let, const는 초기화 되지 않은 채로 저장되고, var는 undefined로 저장됨.


함수코드를 실행하기 전에 함수 선언에 대한 메모리부터 할당.
함수를 호출하는 코드를 함수 선언보다 앞서 배치할수 있음.

초기화를 제외한 선언만 호이스팅함.
변수를 먼저 사용하고 그 후에 선언 및 초기화가 나타나면,
사용하는 시점의 변수는 기본 초기화상태(var는 undefined)

console.log(age); ==> undefined
console.log(name); ==> ReferenceError 

var age = 25;
const  name = 'hoo00nn';

var의 경우 undefined 형태로 메모리에 저장되기 때문에 콘솔에 undefined가 찍힌다
const의 경우 초기화되지 않은 상태로 메모리에 저장되기 때문에 초기화전에 변수를 참조 할 수 없다는 ReferenceError가 발생

  • 함수와 변수는 코드를 실행하기 전에 실행 컨텍스트를 위해 메모리에 저장, 이것을 호이스팅이라함.
  • 함수는 전체 함수에 대한 참조화 함께 저장되고, var는 undefined, let, const는 초기화되지 않은 상태로 메모리에 저장됨.
profile
열심히 기록

0개의 댓글