기초 학습/JavaScript
[JS] Null과 Undefined
뜐🐸
2025. 1. 21. 16:49
Javascript의 원시타입에는 Null
과 Undefined
도 포함된다. 두 단어 모두 '아무것도 없다' 혹은 '문제가 있다'라는 부정적인 의미를 가진 것 같지만, 사용 목적과 의미는 명확히 구분된다.
Null
null
은 어떤 값이 의도적으로 비어있음을 표현할 때 사용하며 다음과 같은 특징을 갖는다.
- 객체로 취급:
null
의 자료형을 확인하면typeof null === "object"
로 출력된다. 이는 JavaScript의 오래된 설계 상의 버그로, null은 실제로 객체는 아니다. Falsy
값: 불리언 연산에서는 false으로 취급되는falsy
값이다.- 의도적 사용: 특정 변수가 아무 객체도 가리키고 있지 않음을 명시적으로 표현하고자 할 때 사용한다.
let value = null; // '값이 없다'는 것을 의도적으로 표현
console.log(value); // null
자주 볼 타입은 아니다.
Undefined
undefined
는 JavaScript에서 자주 보는 타입으로, 값이 정의되지 않은 상태를 나타낸다. 아래의 경우에 undefined
가 반환된다.
1. 값을 할당하지 않은 변수
let value;
console.log(value); // undefined
2. 함수에서 값을 반환하지 않은 경우
function noReturn() {}
console.log(noReturn()); // undefined
3. 객체의 존재하지 않는 프로퍼티를 참조한 경우
const obj = {};
console.log(obj.missingKey); // undefined
null과 undefined의 차이
undefined
: 값을 할당하지 않은 상태를 의미한다. JavaScript 엔진이 자동으로 할당하는 값이다.null
: 값이 비어 있음을 의도적으로 표현한 상태를 의미한다. 프로그래머가 명시적으로 할당하는 값이다.
typeof null; // "object" (하위호환 유지를 위해 "null"이 아님)
typeof undefined; // "undefined"
null === undefined; // false
null == undefined; // true
null === null; // true
null == null; // true
!null; // true
isNaN(1 + null); // false
isNaN(1 + undefined); // true