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
'기초 학습 > JavaScript' 카테고리의 다른 글
[JS] JavaScript 함수 기초 (0) | 2025.01.30 |
---|---|
[JS] 객체 리터럴 (0) | 2025.01.23 |
[JS] 자바스크립트의 배열 (1) | 2025.01.22 |
[JS] 비교 연산자 ( ==와 ===의 차이) (0) | 2025.01.21 |
[JS] JavaScript의 문자열 정리 (규칙, 메서드, 템플릿) (0) | 2025.01.19 |