
JavaScript를 처음 배우는 개발자들이 가장 혼란스러워하는 개념 중 하나가 undefined와 null의 차이점입니다. 둘 다 "값이 없다"는 의미를 나타내지만, 그 용도와 동작 방식에는 중요한 차이가 있습니다. 이번 글에서는 이 두 개념의 차이점과 실제 사용 사례를 자세히 살펴보겠습니다.
undefined는 JavaScript에서 변수가 선언되었지만 값이 할당되지 않았을 때 자동으로 할당되는 값입니다.
let a;
console.log(a); // undefined
let b = undefined;
console.log(b); // undefined
null은 개발자가 의도적으로 "값이 없음"을 나타내기 위해 할당하는 값입니다.
let user = null;
console.log(user); // null
console.log(typeof undefined); // "undefined"
console.log(typeof null); // "object"
// 느슨한 비교 (==)
console.log(undefined == null); // true
// 엄격한 비교 (===)
console.log(undefined === null); // false
let name;
console.log(name); // undefined
const user = {};
console.log(user.name); // undefined
function doNothing() {}
console.log(doNothing()); // undefined
let user = null; // 사용자 정보가 아직 로드되지 않음
let largeObject = { /* 대용량 데이터 */ };
// 더 이상 필요하지 않은 경우
largeObject = null;
null을 할당하면 가비지 컬렉션의 대상이 됨let heavyData = { /* 대용량 데이터 */ };
// 데이터 사용 완료 후
heavyData = null; // 가비지 컬렉션 대상이 됨
undefined는 단순히 "값이 없음"을 나타내는 상태null 사용
undefined 사용
// 권장하지 않는 방법
let value = undefined;
// 권장하는 방법
let value;
// 안전한 null 체크
if (value === null) {
// null 처리
}
// 안전한 undefined 체크
if (typeof value === 'undefined') {
// undefined 처리
}
undefined와 null은 각각의 고유한 용도가 있으며, 상황에 맞게 적절히 사용하는 것이 중요합니다. undefined는 JavaScript 엔진이 자동으로 할당하는 값으로, 변수의 초기 상태를 나타내는 데 사용됩니다. 반면 null은 개발자가 의도적으로 "값이 없음"을 표현할 때 사용하며, 메모리 관리에도 활용됩니다.
이 두 개념을 올바르게 이해하고 사용하면 더 안정적이고 예측 가능한 코드를 작성할 수 있습니다.