undefined와 null은 둘 다 '없음'을 나타내지만 그 속내를 비춰보면 완전히 다른 값을 나타냅니다.
각각의 타입명의 값이 유일합니다.
undefined 타입의 값은 오직 undefined,
null 타입의 값은 오직 null뿐입니다.
- 변수 선언은 되어있지만 값이 할당되지 않은 상태입니다.
const a; console.log(a); // undefined console.log(typeof a); // undefined
- 수학적으로
NaN
에 해당합니다.- 타입은
undefined
입니다.
- 의도적으로 값을 지정하지 않을 때 사용합니다.
const a = null; console.log(a); // null console.log(typeof a); // object
- 수학적으로
0
에 해당합니다.- 타입은
Object
입니다.
Q. null 타입의 값은 오직 null이라면서, 왜 null값의 타입은 object인걸까?
A. 자바스크립트의 흔한 버그 중 하나입니다.
null값은 객체가 아닌 기본 타입입니다.
null 타입을 올바르게 체크하는 다른 방법을 사용하면 됩니다. (eqeqeq(===))
const a = null; a === null; // true