본문 바로가기

프로그래밍 언어/자바스크립트

JavaScript null이란? 값 없음(null)과 정의되지 않음(undefined)의 차이

JavaScript null이란? 값 없음(null)과 정의되지 않음(undefined)의 차이

JavaScript에서 nullundefined는 둘 다 '값이 없음'을 나타내는 데이터 타입이지만, 그 의미와 용도가 다릅니다. 이 가이드에서는 nullundefined의 차이를 명확히 구분하고, 두 개념을 올바르게 사용하는 방법을 설명합니다.

 

 

목차

  1. null과 undefined의 정의
  2. null과 undefined의 차이점
  3. null과 undefined의 비교
  4. 사용 사례 및 실전 예제
  5. 결론

 

null과 undefined의 정의

JavaScript에서 nullundefined는 각각 특정한 상황에서 '값이 없음'을 나타냅니다. 두 용어의 정의를 살펴보겠습니다.

null

null은 명시적으로 '값이 없음'을 나타내는 특별한 값입니다. 즉, 개발자가 의도적으로 변수가 더 이상 어떤 값을 가지지 않도록 설정할 때 사용합니다.

let foo = null; // foo는 값이 없음을 의미

undefined

undefined는 변수가 선언되었지만, 초기화되지 않았을 때 자동으로 할당되는 값입니다. 즉, 변수는 존재하지만 아직 어떠한 값도 할당되지 않았음을 의미합니다.

let bar; // bar는 선언되었지만 초기화되지 않음
console.log(bar); // undefined 출력

 

 

null과 undefined의 차이점

비록 둘 다 값이 없음을 나타내지만, nullundefined는 다음과 같은 중요한 차이점을 가지고 있습니다.

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에서 비교 연산자 =====는 각각 느슨한 비교와 엄격한 비교를 수행합니다.

느슨한 비교 (==)

nullundefined는 느슨한 비교에서 같다고 평가됩니다.

console.log(null == undefined); // true

엄격한 비교 (===)

엄격한 비교에서는 nullundefined가 다른 값으로 간주됩니다. 즉, 데이터 타입까지 비교할 때는 같지 않습니다.

console.log(null === undefined); // false

 

 

 

 

사용 사례 및 실전 예제

nullundefined는 각각 다른 상황에서 사용됩니다. 실전에서 어떻게 활용되는지 예제를 통해 알아봅니다.

null 사용 예제

null은 보통 변수의 값이 의도적으로 비어 있음을 나타낼 때 사용됩니다. 데이터베이스의 조회 결과가 없거나, 객체의 속성을 비워둘 때 null을 사용할 수 있습니다.

let user = {
    name: "Alice",
    age: null // 나이는 아직 알 수 없음
};

undefined 사용 예제

undefined는 주로 변수가 아직 초기화되지 않았거나 함수가 값을 반환하지 않을 때 발생합니다.

function noReturn() {
    // 값 반환 없음
}

let result = noReturn(); // result는 undefined

 

 

결론

JavaScript에서 nullundefined는 비슷해 보이지만, 그 의미와 사용 목적에서 중요한 차이를 가지고 있습니다. null은 명시적으로 '값이 없음'을 나타내고, undefined는 초기화되지 않은 변수를 가리킵니다. 두 개념을 명확히 구분하여 올바르게 사용하는 것이 중요합니다.