서론
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 (타입이 다름)