728x90
JavaScript에서 각각 의미가 다른 값 또는 상태이다.
null
빈값을 나타낸다. 개발자가 "값이 없음"을 명시할 때 사용하는 값이고, 실제로는 비어 있는 값(null reference)을 의미한다. 나중에는 값이 들어올 것이다를 의미하기도 한다.
let user = null;
console.log(user); // null
undefined
정의되지 않음을 나타낸다. 변수는 선언되었지만 값이 할당되지 않은 경우의 상태일 때 자동으로 부여되는 값이다.
함수에서는 return이 명시되지 않으면 undefined로 반환된다.
let x;
console.log(x); // undefined
function test() {}
console.log(test()); // undefined
undeclared
선언되지 않음을 나타낸다. 변수가 선언되지 않은 상태에서 접근을 시도할 때 발생하는데 코드 실행 전에 JS 엔진이 인식하지 못하므로 ReferenceError 발생시킨다.
console.log(y); // ReferenceError: y is not defined
NaN (Not a Number)
표현 불가능한 수치(숫자 형태)일 때의 특수한 숫자 값이다. 산술 연산이 실패할 때 자주 등장하고 typeof NaN === 'number'다.
let a = 0 / 0; // NaN
let b = parseInt("hello"); // NaN
console.log(NaN === NaN); // false
console.log(Number.isNaN(NaN)); // true
정리표
| 항목 | 값 여부 | 선언 여부 | 초기화 여부 | 비교 연산자 동작 | typeof 결과 |
| null | 없음 | O | O (수동) | null === null ✅ | object |
| undefined | 없음 | O | X 또는 O | undefined === undefined ✅ | undefined |
| undeclared | 없음 | X | X | ReferenceError | 에러 발생 |
| NaN | 없음 | O | O | NaN !== NaN ❌ | number |
마무리
- == 는 null과 undefined를 동등하게 취급하지만, ===은 엄격하게 구분한다. typeof는 ReferenceError를 피하기 위한 체크에 유용하다.
null == undefined // true
null === undefined // false
if (typeof someVar === 'undefined') {
// 안전하게 처리 가능
}
728x90
'TECH' 카테고리의 다른 글
| 태스크 큐 (Task Queue) / 매크로태스크 큐 (Macrotask Queue) (1) | 2025.06.23 |
|---|---|
| 주소창에 google.com을 입력해서 결과를 보기까지의 과정들 🌐 (1) | 2025.06.22 |
| REST API와 RESTful API 📇 (0) | 2025.06.20 |
| var, let, const의 차이점 (3) | 2025.06.19 |
| 브라우저 저장소와 position (0) | 2025.06.18 |