기초 학습/JavaScript

[JS] Null과 Undefined

뜐🐸 2025. 1. 21. 16:49

Javascript의 원시타입에는 NullUndefined도 포함된다. 두 단어 모두 '아무것도 없다' 혹은 '문제가 있다'라는 부정적인 의미를 가진 것 같지만, 사용 목적과 의미는 명확히 구분된다.

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