[JavaScript] null과 undefined

서론

JavaScript를 다루다 보면 null, undefined 그리고 return: false, return: true 같은 값들을 자주 마주치게 된다.
이들은 겉보기에는 비슷해 보이지만, 엄연히 다른 의미와 동작 방식을 가진다.
이번 글에서는 각각의 차이점과 실제 코드에서의 활용법을 정리해보겠다.

1. null 과 undefined의 의미

(1) null이란?

null은 의도적으로 "값이 없음"을 표현하는 값이다.
개발자가 명시적으로 "여기에는 값이 없다"라는 것을 나타낼 때 사용한다.

let a = null;
console.log(a); // null

특징

  • 개발자가 직접 할당하여 비어 있음을 나타냄
  • typeof null은 "object" → JavaScript의 오래된 버그지만 여전히 유지됨
  • 메모리를 확보했지만 값이 없는 상태

(2) undefined란?

undefined는 값이 할당되지 않은 변수의 초기 상태를 의미한다.
즉, 변수는 선언되었지만 값이 없는 상태일 때 자동으로 undefined가 된다.

let b;
console.log(b); // undefined

특징

  • 값이 할당되지 않은 변수의 기본값
  • 함수가 명시적으로 값을 반환하지 않으면 undefined를 반환
  • 객체 속성을 찾을 수 없을 때도 undefined가 반환됨
 
let obj = {};
console.log(obj.someKey); // undefined

 

2. null과 undefined의 차이

  null undefined
의미 "값이 없음"을 명시적으로 할당 값이 아직 할당되지 않음
데이터 타입 object (버그이지만 유지됨) undefined
사용 사례 값이 비었음을 나타내는 의도적 표현 변수 선언 후 값을 할당하지 않았을 때
비교 (==) null == undefined → true undefined == null → true
비교 (===) null === undefined → false undefined === null → false
console.log(null == undefined); // true (값이 없다는 점에서 동등)
console.log(null === undefined); // false (타입이 다름)