2026-01-25

undefined/null/NaN

undefined

값이 할당되지 않은 상태를 나타내는 기본값

언제 undefined가 되나?

  • 변수를 선언만 하고 값 할당 X
  • 함수에서 return 값이 없는 경우
  • 객체에 존재하지 않는 프로퍼티 접근
  • 배열 인덱스가 없는 경우
let a;
console.log(a);// undefined

functionfoo() {}
console.log(foo());// undefined

const obj = {};
console.log(obj.x);// undefined

특징

  • JS가 자동으로 부여
  • 타입: undefined
typeofundefined; // "undefined"

null

의도적으로 값이 없음을 명시적으로 표현한 값

언제 사용하나?

  • “비어 있음”을 개발자가 의도적으로 표현할 때
  • 아직 값이 없거나 초기화 상태를 나타낼 때
let user = null; // 아직 사용자 없음

특징

  • 개발자가 직접 할당
  • 타입: object (자바스크립트 설계상 버그)
typeofnull; // "object"

🌟 undefined vs null

구분 undefined null
의미 값이 할당되지 않음 값이 없음을 의도적으로 표현
할당 주체 자바스크립트 개발자
사용 의도 초기 상태 비어 있음 명시
typeof undefined object

NaN (Not a Number)

숫자 연산 결과가 유효한 숫자가 아닐 때 반환되는 값

언제 발생하나?

  • 숫자로 변환할 수 없는 값으로 연산
  • 잘못된 수학 연산
Number("abc"); // NaN
0 / 0; // NaN
Math.sqrt(-1); // NaN

특징

  • 타입은 number
  • 자기 자신과도 같지 않음 (유효하지 않은 숫자 결과”를 나타내는 특수한 값)
NaN === NaN; // false

NaN 체크 방법

Number.isNaN(value); // 가장 안전

value === NaN → 항상 false


요약

  • undefined: 값이 할당되지 않은 상태 (자동)
  • null: 값이 없음을 명시 (의도)
  • NaN: 숫자 연산 실패 결과 (number 타입의 특수 값)

참고자료

  • https://inpa.tistory.com/entry/%F0%9F%93%9A-null-undefined-NaN
  • https://velog.io/@iamhayoung/JavaScript-undefined-null%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%A0%90
  • https://ldd6cr-adness.tistory.com/entry/WIPUndefined-vs-null-vs-NaN

results matching ""

    No results matching ""