본문 바로가기

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

JavaScript에서 null 체크하는 방법과 활용 사례

JavaScript에서 null 체크하는 방법과 활용 사례

JavaScript에서 null 값은 객체가 존재하지 않음을 의미하는 특별한 데이터 유형입니다. 그러나 undefined와 혼동하기 쉽고, 타입 강제 변환(type coercion) 등의 이유로 예상치 못한 동작을 유발할 수도 있습니다. 본 글에서는 null을 효과적으로 체크하는 다양한 방법과 실무에서 활용할 수 있는 사례를 살펴보겠습니다.

 

 

목차

  1. JavaScript에서 null이란?
  2. null과 undefined의 차이
  3. null을 체크하는 다양한 방법
  4. 명확한 null 비교를 위한 best practice
  5. null 체크를 활용한 안전한 데이터 처리
  6. 실무에서의 활용 사례
  7. 주의해야 할 사항과 최적의 방법

 

JavaScript에서 null이란?

JavaScript에서 null은 명시적으로 "값이 없음"을 나타내는 기본 데이터 유형입니다.
즉, 변수가 null인 경우 이는 개발자가 의도적으로 "비어 있음"을 나타내기 위해 할당한 상태입니다.

  • typeof null'object' (역사적인 설계 오류)
  • null === nulltrue (항상 자기 자신과 같음)
  • null == undefinedtrue (느슨한 비교에서는 동일 취급)

 

 

 

null과 undefined의 차이

nullundefined는 종종 혼동되지만 중요한 차이가 있습니다.

특징 null undefined
의미 명시적인 "비어 있음" 값이 정의되지 않음
데이터 타입 object undefined

 

 

 

null을 체크하는 다양한 방법

null을 확인하는 방법은 여러 가지가 있으며, 상황에 따라 적절한 방법을 선택해야 합니다.

  • 엄격한 비교: if (value === null)
  • 느슨한 비교 (null과 undefined 포함): if (value == null)
  • Falsy 체크 (값이 비어있는 경우 포함): if (!value)

 

 

 

명확한 null 비교를 위한 best practice

null 체크를 할 때 주의해야 할 사항은 다음과 같습니다:

  1. 엄격한 비교(===)를 사용하여 undefined와 구별
  2. Falsy 체크 시, 0이나 ""이 의도치 않게 false로 처리될 수 있음
  3. 함수의 매개변수를 받을 때 기본값을 설정하는 것이 좋음

 

 

 

null 체크를 활용한 안전한 데이터 처리

null을 올바르게 처리하면 예상치 못한 오류를 방지할 수 있습니다.
대표적인 방법은 ?? (Nullish Coalescing 연산자)를 활용하는 것입니다.

let name = null;
let displayName = name ?? "Guest";
console.log(displayName); // "Guest"

 

 

 

 

실무에서의 활용 사례

실제 개발 환경에서 null 체크는 다양한 상황에서 중요한 역할을 합니다.
만약 적절한 처리를 하지 않으면, 예상치 못한 오류가 발생하거나 프로그램의 안정성이 떨어질 수 있습니다.
아래는 실무에서 자주 사용되는 null 체크 활용 사례입니다.

1. API 응답 값 처리

RESTful API 또는 GraphQL을 사용할 때, 응답 데이터가 null일 가능성이 있습니다.
특히, 서버에서 특정 데이터를 제공하지 않거나, 요청한 값이 존재하지 않는 경우 null이 반환될 수 있습니다. 이를 방지하기 위해 기본값을 설정하거나, 예외 처리를 해야 합니다.

fetch("https://api.example.com/user")
  .then(response => response.json())
  .then(data => {
      let userName = data.name ?? "Guest";  // Nullish Coalescing 사용
      console.log(`Hello, ${userName}!`);
  })
  .catch(error => console.error("API 호출 오류:", error));

2. 객체 프로퍼티 안전 접근

깊이 중첩된 객체를 다룰 때, 특정 프로퍼티가 null 또는 undefined일 경우 직접 접근하면 런타임 오류가 발생할 수 있습니다. 이를 해결하기 위해 옵셔널 체이닝(?.)을 사용하면 안전하게 접근할 수 있습니다.

let user = { profile: { name: "Alice" } };
console.log(user.profile?.name);  // "Alice"
console.log(user.account?.email); // undefined (오류 없이 실행됨)

3. 사용자 입력 데이터 검증

폼 입력값이나 URL 파라미터를 처리할 때, 사용자가 입력하지 않은 값이 null일 수 있습니다. 이를 방지하기 위해 기본값을 설정하거나, 필수 입력값을 검사해야 합니다.

function getUserInput(input) {
    return input ?? "기본값";  // 입력값이 null 또는 undefined이면 "기본값" 반환
}

console.log(getUserInput("사용자 입력값"));  // "사용자 입력값"
console.log(getUserInput(null));            // "기본값"

4. 데이터베이스 조회 시 null 처리

데이터베이스에서 특정 데이터를 조회할 때, 결과가 존재하지 않으면 null이 반환될 수 있습니다. 이때 기본값을 설정하거나 예외 처리를 해야 안전한 코드가 됩니다.

let user = database.findUserById(1) ?? { name: "Unknown", age: 0 };
console.log(`사용자 이름: ${user.name}`);

5. 조건문에서 null 값 방지

조건문에서 null을 적절히 처리하지 않으면, 예상과 다른 결과가 나올 수 있습니다. 이를 방지하기 위해 정확한 조건을 설정해야 합니다.

let value = null;

// 잘못된 방식 (Falsy 체크 사용 시 0, ""도 false로 취급됨)
if (!value) {
    console.log("값이 없습니다.");  // 예상치 못한 동작 가능
}

// 올바른 방식 (null과 undefined만 체크)
if (value === null || value === undefined) {
    console.log("값이 null 또는 undefined입니다.");
}

 

 

 

주의해야 할 사항과 최적의 방법

null 체크를 할 때 고려해야 할 중요한 사항:

  • typeof null'object'이므로 타입 체크 시 주의
  • Falsy 체크 시, 0, "" 등의 값이 포함될 수 있음
  • 가능한 경우 옵셔널 체이닝 ?.?? 연산자를 적극 활용