호이스팅

Geonil Jang·2021년 7월 27일
0

code-js

목록 보기
7/7
post-thumbnail

함수의 두 가지 리터럴

  1. 함수선언
  • 함수 선언은 function 키워드 뒤로 함수의 이름을 적어서 사용
  • 코드를 실핼할 때 함수를 포함하는 스코프 최상단으로 끌어 올려짐
function test(){}
  1. 함수 표현식
  • 함수 표현식은 function 키워드 뒤로 이름을 적지 않고 사용. 이름이 없기 때문에 익명 함수라고 부름.
  • 변수를 통해서 함수를 참조하기 때문에 호이시틍이 일어나지 않습니다.
let test = function(){}

변순 선언 역시 코드를 실행할 때 변수를 포함하는 스코프 최상단으로 끌어올려집니다.

함수안에 선언된 변수는 함수 스코프 안에서 최상단으로 끌어올려집니다.

호이스팅이 되지 않는 선언들

  • let, const, class
    - "cannot access before initialization."

블록 스코프를 생성하는 let, const는 호이스팅이 일어나지 않습니다. class

  • var로 선언된 변수는 호이스팅되지만, let, const로 선언된 변수화 상수는 TDZ(Temporal Dead Zone 임시 접근 불가구역) 구역에 배치됩니다. 이 값들은 선언이 실행된 후에 TDZ에서 젝어 되어 사용 가능한 상태가 됩니다.

정리

  • 함수 선언돠 변수 선언은 코드를 실행할 때 해당 선언 스코프 최상단으로 끌어올려집니다. 이런 현상을 호이스팅이라고 합니다.
  • 선언한 변수의 값은 끌어올려지지 않습니다.
  • let, const, class 선언은 호이스팅 현상이 일어나지 않습니다.
profile
takeaways

0개의 댓글