undefined"값이 할당되지 않은 상태"를 나타낸다.
자바스크립트 엔진이 자동으로 부여하는 값이다.
let x;
console.log(x); // undefined
function doSomething() {}
console.log(doSomething()); // undefined
let user = { name: "Alice" };
console.log(user.age); // undefined
let arr = [1, , 3];
console.log(arr[1]); // undefined
function greet(name) {
console.log(name);
}
greet(); // undefined
typeof undefined; // 'undefined'
null"명시적으로 값이 없음"을 나타낸다.
즉, 프로그래머가 의도적으로 "비어 있음"을 표현할 때 사용한다.
let currentUser = null;
someElement = null; // GC 대상이 되도록
let config = null; // 나중에 설정
typeof null; // 'object' ← JS 초기 설계 실수
undefined vs. null 비교| 항목 | undefined | null |
|---|---|---|
| 의미 | 값이 정의되지 않음 | 명시적 빈 값 |
| 누가 설정? | 자바스크립트 엔진 | 개발자 |
| typeof 결과 | 'undefined' | 'object' ← 설계 오류 |
| 사용 의도 | 초기화되지 않은 상태 | 의도적인 "값 없음" |
| 사용 시기 | 변수 선언만 한 경우 등 | 비어있음을 명시할 필요가 있을 때 |
| JSON.stringify | 제거되지 않음 | 유지됨 (null 출력) |
undefined는 암묵적이며 엔진이 부여하는 값이므로, 직접 할당하는 건 권장되지 않는다.let x = undefined; // ❌ 권장 X
let x = null; // ✅ 명시적 빈 값
==) 비교는 혼란을 유발할 수 있다:null == undefined // true
null === undefined // false
→ 실제 개발에서는 항상 ===을 사용하는 것이 좋다 (엄격한 비교).
| 값 | 의미 | 누가 설정함 | 사용 목적 | typeof |
|---|---|---|---|---|
undefined | 값이 없음 (초기 상태) | JS 엔진 | 아직 할당되지 않음 | 'undefined' |
null | 명시적 빈 값 | 개발자 | 값이 없음을 표현 | 'object' |