본문 바로가기
TECH

null, undefined, undeclared, NaN

by Stella-Park 2025. 6. 21.
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