JavaScript null이란? 값 없음(null)과 정의되지 않음(undefined)의 차이
JavaScript에서 null
과 undefined
는 둘 다 '값이 없음'을 나타내는 데이터 타입이지만, 그 의미와 용도가 다릅니다. 이 가이드에서는 null
과 undefined
의 차이를 명확히 구분하고, 두 개념을 올바르게 사용하는 방법을 설명합니다.
목차
null과 undefined의 정의
JavaScript에서 null
과 undefined
는 각각 특정한 상황에서 '값이 없음'을 나타냅니다. 두 용어의 정의를 살펴보겠습니다.
null
null
은 명시적으로 '값이 없음'을 나타내는 특별한 값입니다. 즉, 개발자가 의도적으로 변수가 더 이상 어떤 값을 가지지 않도록 설정할 때 사용합니다.
let foo = null; // foo는 값이 없음을 의미
undefined
undefined
는 변수가 선언되었지만, 초기화되지 않았을 때 자동으로 할당되는 값입니다. 즉, 변수는 존재하지만 아직 어떠한 값도 할당되지 않았음을 의미합니다.
let bar; // bar는 선언되었지만 초기화되지 않음
console.log(bar); // undefined 출력
null과 undefined의 차이점
비록 둘 다 값이 없음을 나타내지만, null
과 undefined
는 다음과 같은 중요한 차이점을 가지고 있습니다.
1. 타입 차이
typeof
연산자를 사용하면 null
은 'object'로, undefined
는 'undefined'로 평가됩니다. 이는 JavaScript의 설계 결함으로, null
이 실제로 객체가 아님에도 불구하고 'object'로 간주됩니다.
console.log(typeof null); // "object"
console.log(typeof undefined); // "undefined"
2. 할당 방식 차이
null
은 개발자가 명시적으로 할당하는 값입니다. 반면, undefined
는 변수가 선언되었지만 값을 할당하지 않을 때 JavaScript가 자동으로 부여하는 값입니다.
let x = null; // 개발자가 명시적으로 null을 할당
let y; // JavaScript가 자동으로 undefined 할당
null과 undefined의 비교
두 값의 비교는 상황에 따라 다르게 동작합니다. JavaScript에서 비교 연산자 ==
와 ===
는 각각 느슨한 비교와 엄격한 비교를 수행합니다.
느슨한 비교 (==)
null
과 undefined
는 느슨한 비교에서 같다고 평가됩니다.
console.log(null == undefined); // true
엄격한 비교 (===)
엄격한 비교에서는 null
과 undefined
가 다른 값으로 간주됩니다. 즉, 데이터 타입까지 비교할 때는 같지 않습니다.
console.log(null === undefined); // false
사용 사례 및 실전 예제
null
과 undefined
는 각각 다른 상황에서 사용됩니다. 실전에서 어떻게 활용되는지 예제를 통해 알아봅니다.
null 사용 예제
null
은 보통 변수의 값이 의도적으로 비어 있음을 나타낼 때 사용됩니다. 데이터베이스의 조회 결과가 없거나, 객체의 속성을 비워둘 때 null
을 사용할 수 있습니다.
let user = {
name: "Alice",
age: null // 나이는 아직 알 수 없음
};
undefined 사용 예제
undefined
는 주로 변수가 아직 초기화되지 않았거나 함수가 값을 반환하지 않을 때 발생합니다.
function noReturn() {
// 값 반환 없음
}
let result = noReturn(); // result는 undefined
결론
JavaScript에서 null
과 undefined
는 비슷해 보이지만, 그 의미와 사용 목적에서 중요한 차이를 가지고 있습니다. null
은 명시적으로 '값이 없음'을 나타내고, undefined
는 초기화되지 않은 변수를 가리킵니다. 두 개념을 명확히 구분하여 올바르게 사용하는 것이 중요합니다.
'프로그래밍 언어 > 자바스크립트' 카테고리의 다른 글
JavaScript number 타입, 숫자 처리 및 연산 방법 (0) | 2024.09.24 |
---|---|
JavaScript boolean 타입, 참과 거짓의 논리적 표현 (0) | 2024.09.20 |
JavaScript undefined 데이터 타입: 정의, 특성 및 예제 (0) | 2024.09.12 |
JavaScript 데이터 타입, 기본 타입부터 객체 타입까지 (0) | 2024.09.10 |
JavaScript의 const와 상수 개념, 불변 데이터 구조 만들기 (0) | 2024.09.09 |