질문 27 · 실전 면접 답변
undefined·null·미선언 식별자는 무엇이 다른가요?
이렇게 답해 보세요 (핵심 답변)
undefined는 변수를 선언만 하고 값을 할당하지 않았거나 없는 프로퍼티에 접근했을 때 기본으로 나오는 원시값이고, null은 개발자가 '의도적으로 값이 비어 있음'을 나타낼 때 쓰는 원시값입니다. 반면 미선언 식별자는 스코프에 등록된 적조차 없는 이름으로, 일반 접근 시 ReferenceError가 발생합니다. 예외적으로 typeof에 미선언 이름을 넣으면 'undefined'를 반환하지만, TDZ에 있는 let/const 변수에 typeof를 쓰면 에러가 납니다.
함께 설명하면 좋은 이유 (꼬리질문 대비)
- 객체에 없는 프로퍼티(obj.missing)를 읽으면 undefined 값이 나오지만, 선언 안 된 변수(missing)를 바로 읽으면 ReferenceError가 납니다.
- 느슨한 비교(null == undefined)는 true이지만 엄격한 비교(null === undefined)는 타입이 달라 false입니다.
면접에서 자주 하는 실수
미선언(undeclared) 상태를 undefined나 null 같은 또 하나의 JavaScript 원시 데이터 타입으로 착각하지 않아야 합니다.
원리와 예제까지 읽기
공식 참고 자료
질문 목록 출처 ↗ · 원본 27번을 바탕으로 질문과 답변을 새로 정리했습니다.