null과 undefined, 무엇이 다를까?
자바스크립트(JavaScript)에서 undefined는 하나의 독립적인 타입(primitive type)인 반면, null은 객체(object)로 취급된다는 점이 가장 큰 차이입니다. 두 값 모두 '값이 없다'는 의미를 담고 있지만, 그 발생 원인과 사용 목적이 전혀 다릅니다.
undefined란?
undefined는 변수를 선언했지만 아직 아무 값도 할당하지 않았을 때 자바스크립트 엔진이 자동으로 부여하는 기본값입니다. 즉, 개발자가 의도한 것이 아니라 시스템이 '아직 값이 정해지지 않았다'고 알려주는 상태입니다.
예제 코드
var demo;
alert(demo); // undefined 출력
alert(typeof demo); // "undefined" 출력null이란?
반면 null은 개발자가 직접 변수에 할당하는 값입니다. '값이 비어 있음' 또는 '의도적으로 값이 없음'을 표현하고 싶을 때 명시적으로 대입합니다.
예제 코드
var demo = null;
alert(demo); // null 출력
alert(typeof demo); // "object" 출력알아두면 좋은 추가 정보
typeof null이 "object"를 반환하는 것은 사실 자바스크립트 초기 구현 당시의 역사적인 버그로 알려져 있습니다. 다만 기존 코드와의 호환성을 위해 지금까지 수정 없이 유지되고 있습니다.
또한 동등 비교 연산자를 사용할 때 주의가 필요합니다. 느슨한 비교(null == undefined)는 true를 반환하지만, 엄격한 비교(null === undefined)는 타입이 다르기 때문에 false를 반환합니다.
정리
- undefined: 선언 후 값이 할당되지 않았을 때 시스템이 자동으로 부여하는 값, 타입은
undefined - null: 개발자가 의도적으로 '빈 값'을 나타내기 위해 할당하는 값, 타입은
object
두 값의 차이를 정확히 이해하면 변수 상태를 더 명확하게 관리할 수 있고, 예상치 못한 버그도 예방할 수 있습니다.