Hoisting

성민개발로그·2022년 4월 2일
0

자바스크립트

목록 보기
11/11
post-thumbnail

호이스팅은 코드 실행 전에 변수 및 함수 선언을 해당 범위의 맨 위로 이동하는 자바스립트 메커니즘이다.

변수 생성하는데 총 3가지 단계를 걸친다.

  1. 선언단계: 변수를 변수객체에 등록하는 단계이다 . 해당 변수객체는 스코프 참조대상이된다.
  2. 초기화단계: 변수객체 에 있는 변수들 에게 메모리 공간을 확보해주는 단계. 각 변수들 에게 undefined 값을 할당하게 된다.
  3. 할당단계: 변수들 에게 새로운값을 할당해주는 단계.
  • var는 선언과 초기화 가 한번에 이뤄져서 undefined 값을 초기화 하기 때문에. 변수 선언문 전에 접근해도 에러가 발생하지 않고 undefined 값이 출력이 된다.
  • const ,let 은 선언과 초기화 가 분리되어있기 때문에 변수 선언문 까지 도달해야 초기화 가 되기때문에 그전에 변수에 접근하면 참조에러가 뜬다.

스코프 시작점 부터 초기화 시작점까지 그 구간을 TDZ 일시적 사각지대라고 부른다.

  • 함수선언문 은 선언 과 함수 초기화 가 한번에 이뤄져서 함수 선언문 전에 호출 해도 정상적으로 작동한다 하지만 화살표함수, 함수표현식 은 선언하기 전에 호출하면 참조에러가 뜬다.

호이스팅 우선순위:

변수선언이 함수선언보다 우선순위를 가진다.

0개의 댓글