brunch

You can make anything
by writing

C.S.Lewis

by 별똥별 shooting star Aug 10. 2023

자바스크립트
var, let, const키워드의 차이2

출퇴근길에 공부하는 자바스크립트1

호이스팅이란 변수와 함수 선언이 해당 스코프의 최상단으로 끌어올려지는 행위를 의미한다. 


오늘은 var, let, const의 비교적 관점에서 살펴보도록 하겠다. 호이스팅은 코드가 실행되기 전에 자바스크립트 엔진에 의해 일어나는 것으로 모든 변수 및 함수 선언은 코드에서 위치와 관계없이 해당 스코프의 최상단으로 이동하는 것처럼 동작한다. 이는 개발자들이 예상하지 못하는 버그를 만들어내는 원인 중 하나이다. 


그래서 var로 선언된 변수는 선언 전에 참조하더라도 'undefined'라는 값을 반환한다. 이는 변수가 호이스팅 되었지만 아직 초기화되지 않았기 때문이다. 이를 모르고 사용허여 변수 선언 전에 참조하게 되면 'undefined'라는 값을 반환하여 개발자가 예상한 값이 아닌 'undefined'가 사용되는 것이다. 


 이와 달리 let과 const는 TDZ(Temporal Dead zone)라는 개념이 적용된다. TDZ는 스코프의 시작 지점부터 초기화 시작 지점까지 변수를 참조할 수 없는 구간을 뜻한다. 이 구간에서 변수에 접근하려고 하면 'ReferenceError'가 발생한다. 이렇게 함으로써 코드의 가독성과 예측 가능성을 향상시키고 불필요한 버그를 방지할 수 있다. 

매거진의 이전글 자바스크립트 var, let, const키워드의 차이1
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari