[TIL] 호이스팅과 TDZ

river·2022년 3월 20일
0

호이스팅

함수가 실행되기 전, 안에 있는 변수들을 범위의 최상단으로 끌어올려 먼저 읽어들인 뒤 메모리에 저장해두는 것.

TDZ

JS에서 변수 선언자로 var를 사용할 경우, 변수가 선언되고 값이 할당되기 전에도 해당 변수를 끌어와 사용할 수 있는 문제가 있었는데, 그 원인은 바로 호이스팅 때문이다. 해당 변수가 호이스팅 되는 과정에서 메모리에 남은 데이터가 그대로 불러와지는 것.

이런 문제점을 개선하기 위해 ES6에 새로운 변수 선언자 let과 const가 업데이트되었다. let과 const의 경우 var와는 달리 변수 선언 이전에 해당 변수를 사용하려 할 경우 아직 변수가 선언되지 않았다는 에러가 발생한다.

이런 에러가 발생하는 이유는 해당 변수들이 호이스팅되어 메모리에 저장은 되어있지만, 직접적인 선언 전까지 해당 데이터들에 접근할 수 없도록 일시적인 사각지대가 만들어져있기 때문이다.

이렇게 초기화되지 않은 변수들이 모여있는 곳을 TDZ라고 한다.

profile
가보자고

0개의 댓글