카테고리 없음

null, undefined 차이점

funfunweb 2025. 5. 27. 19:00

1. undefined란?

  • **"값이 할당되지 않은 상태"**를 나타냅니다.
  • 변수가 선언만 되고 초기화되지 않은 상태일 때 기본값으로 자동 할당됩니다.
  • 함수에서 명시적으로 값을 반환하지 않으면 undefined를 반환합니다.
  • 객체에 존재하지 않는 프로퍼티를 접근할 때도 undefined가 나옵니다.

예시

let a;
console.log(a);           // undefined (값이 할당되지 않음)

function foo() {}
console.log(foo());       // undefined (반환값 없음)

const obj = {};
console.log(obj.prop);    // undefined (존재하지 않는 속성)

 

2. null이란?

  • "값이 없음"을 명시적으로 나타내는 특수한 값입니다.
  • 개발자가 변수를 "비어있음" 상태로 설정하고 싶을 때 직접 할당합니다.
  • 타입이 객체(typeof null === "object")입니다 (자바스크립트의 역사적 버그).

예시

let b = null;
console.log(b);           // null (명시적으로 빈 값을 할당)

const obj = { prop: null };
console.log(obj.prop);    // null (의도적으로 빈 값 지정)

 

3. 차이점 요약

구분                      undefined                                                                    null

 

의미 값이 아직 할당되지 않음 값이 의도적으로 없음 (빈 값)
할당 여부 자바스크립트가 자동 할당 개발자가 직접 할당
기본값 변수 선언 후 초기화 안 할 때 기본값 없음 (직접 할당해야 함)
타입 undefined object (자바스크립트 역사적 버그)
사용 목적 "값이 정의되지 않음" 표시 "값이 없음"을 명확히 표현

4. 실용적 구분 방법

let x;
console.log(x === undefined);  // true (아직 값 없음)

let y = null;
console.log(y === null);       // true (명시적으로 빈 값)

console.log(x == y);           // true (느슨한 비교는 같다고 판단)
console.log(x === y);          // false (엄격 비교는 다름)