2023-02-09
면접 단골 삼형제 var, let, const
면접 단골 삼형제 var, let, const 키워드를 한 번에 알아보자!
var
var는 선언과 동시에 undefined 값으로 초기화되기 때문에,
호이스팅 시 참조 에러를 발생하지 않고 undefined를 참조하게 된다.
호이스팅이란 해당 스코프의 최상단으로 옮겨지는 동작을 말한다.
또한 중복 선언과 함수 레벨 스코프만 지원하기 때문에, 과도한 전역 변수를 생성하게 되는 문제가 있다.
암묵적 전역
이 발생한다.
암묵적 전역이란 변수를 선언하지 않고 값을 할당했을 때, 해당 변수가 자동으로 전역 객체(window)에
속성(property)이 생성되는 현상을 말한다.
let
var와 다르게 중복 선언할 수 없으며, 런타임(실행)에 초기화되기 때문에 호이스팅 시 참조 에러가 발생한다.
이러한 경계 구역을 일시적 사각지대(Temporal Dead Zone)
라 한다.
블록 레벨 스코프를 지원하기 때문에 반복문, 조건문 등에서 스코프를 갖는다.
또한 let은 암묵적 전역이 발생하지 않는다.
const
중복 선언 불가, 블록 레벨 스코프를 지원, 런타임에 초기화는 let과 동일하다.
다른 것은 재할당이 불가능해 상수를 선언할 때 사용할 수 있다.
선언과 동시에 초기화를 명시하지 않으면 문법 에러가 발생한다.
참조 타입을 할당한 경우 값을 변경할 수 있다.
즉, 재할당을 금지할 뿐 불변
을 의미하지 않는다.