1. Null
- 명시적으로 비어있음 또는 값이 없음을 나타냄.
- 즉, 어떤 변수가 null로 설정되었다면, 의도적으로 그 값이 비어 있음을 개발자가 나타낸 것
- typeof null은 'object'를 반환 (JavaScript의 오래된 버그)
let obj = null;
console.log(typeof obj); // 'object'
2. 0
- 숫자 값 중 하나로, 숫자 데이터에서의 "없음" 또는 "비어 있음"이 아님.
- 이는 단순히 숫자형의 값이며, 숫자형 연산에서 일반적으로 사용된다.
- falsy한 값이지만 유효한 숫자이다.
let num = 0;
console.log(typeof num); // 'number'
console.log(Boolean(0)); // false
3. undefined
- 변수가 선언되었지만, 값이 할당되지 않았을 때 자동으로 부여되는 값
- 객체의 존재하지 않는 속성에 접근할 때 반환
- 함수가 return문 없이 실행될 때 반환
let var1;
console.log(var1); // undefined
console.log(typeof var1); // 'undefined'
const obj = {};
console.log(obj.nonexistentProperty); // undefined
비교 예시
console.log(null == undefined); // true
console.log(null === undefined); // false
console.log(null == 0); // false
console.log(undefined == 0); // false
// falsy 값 비교
console.log(Boolean(null)); // false
console.log(Boolean(0)); // false
console.log(Boolean(undefined)); // false
주요 차이점
- 명시성: null은 의도적으로 값이 없음을 명시하는 것이고, undefined는 시스템에 의해 자동으로 값이 없는 것으로 처리된다.
- 타입: null은 객체로 취급되지만, undefined는 고유한 undefined 타입이다.
- 의미: 0은 숫자적인 값이며, 값이 없음이나 비어 있음을 나타내는 것이 아니다. 반면 null과 undefined는 값이 없음을 나타낸다.