[위클리페이퍼] 변수와 호이스팅

nali kang·2024년 1월 21일
0

위클리페이퍼

목록 보기
7/13
post-thumbnail

호이스팅

호이스팅은 자바스크립트 특성으로 코드를 실행하기 이전에 함수, 변수, 클래스 드으이 선언문을 코드 실행범위 최상단으로 끌어올려 선언하는 현상을 의미합니다.

각 변수의 특징 및 호이스팅 관점

var

var은 함수의 선언단계와 초기화단계가 같이 이루어집니다. 선언함과 동시에 초기화를 같이 진행하게 되는데, 이러한 특징으로 인해 호이스팅되어 최상단에 선언할 때 선언과 동시에 초기화가 진행되게 됩니다. 그렇기 때문에 var로 선언한 변수는 선언 이전에 변수를 참조하거나 값을 사용할 수 있습니다.

let, const

let과 const는 var과 다르게 변수를 선언하기 이전에 변수를 참조하면 Reference Error가 발생합니다. let 과 const도 마찬가지로 호이스팅되어 최상단으로 끌어올려져 선언하게 되는데 왜 에러가 발생할까요?
그 이유는 let과 const는 선언과 초기화가 동시에 진행되지 않고 선언이 진행된 후 초기화가 진행되게 됩니다. 이러한 특성상 변수가 선언은 되었지만 값을 할당하기 위한 메모리 초기화 작업이 진행되지 않았기 때문에, 초기화 단계 이전에 해당 변수를 참조하거나 값을 사용하게 되면 Reference Error가 발생하게 됩니다.

선언단계와 초기화 단계 사이를 TDZ(Temporal Dead Zone)이라 불리며 let과 const의 엄격한 규칙을 의미합니다. 자유롭게 사용하지만 코드충돌의 위험을 야기하는 var보다 좀더 엄격한 규칙을 준수해서 사용해야 하는 특징을 가집니다.

profile
안녕하세요 강나리입니다.

0개의 댓글