JavaScript의 undefined와 null: 그 차이점과 사용법

2025. 5. 27. 22:19·Frontend Development
반응형

들어가며

JavaScript를 처음 배우는 개발자들이 가장 혼란스러워하는 개념 중 하나가 undefined와 null의 차이점입니다. 둘 다 "값이 없다"는 의미를 나타내지만, 그 용도와 동작 방식에는 중요한 차이가 있습니다. 이번 글에서는 이 두 개념의 차이점과 실제 사용 사례를 자세히 살펴보겠습니다.


undefined와 null의 기본 개념

undefined

undefined는 JavaScript에서 변수가 선언되었지만 값이 할당되지 않았을 때 자동으로 할당되는 값입니다.

let a;
console.log(a); // undefined

let b = undefined;
console.log(b); // undefined

null

null은 개발자가 의도적으로 "값이 없음"을 나타내기 위해 할당하는 값입니다.

let user = null;
console.log(user); // null

주요 차이점

1. 할당 방식

  • undefined: JavaScript 엔진이 자동으로 할당
  • null: 개발자가 명시적으로 할당

2. 타입

console.log(typeof undefined); // "undefined"
console.log(typeof null);      // "object"

3. 비교 연산

// 느슨한 비교 (==)
console.log(undefined == null);  // true

// 엄격한 비교 (===)
console.log(undefined === null); // false

실제 사용 사례

undefined의 일반적인 발생 상황

  1. 변수 선언만 하고 초기화하지 않은 경우

    let name;
    console.log(name); // undefined
  2. 존재하지 않는 객체 프로퍼티 접근

    const user = {};
    console.log(user.name); // undefined
  3. 함수의 반환값이 없는 경우

    function doNothing() {}
    console.log(doNothing()); // undefined

null의 일반적인 사용 사례

  1. 의도적인 값 초기화

    let user = null; // 사용자 정보가 아직 로드되지 않음
  2. 객체 참조 해제

    let largeObject = { /* 대용량 데이터 */ };
    // 더 이상 필요하지 않은 경우
    largeObject = null;

메모리 관리 관점에서의 차이

null과 메모리 관리

  • 객체를 참조하는 변수에 null을 할당하면 가비지 컬렉션의 대상이 됨
  • 대용량 데이터를 다룰 때 메모리 관리를 위해 사용
let heavyData = { /* 대용량 데이터 */ };
// 데이터 사용 완료 후
heavyData = null; // 가비지 컬렉션 대상이 됨

undefined와 메모리 관리

  • undefined는 단순히 "값이 없음"을 나타내는 상태
  • 메모리 해제와 직접적인 관련 없음
  • 가비지 컬렉션을 유도하지 않음

모범 사례와 주의사항

권장하는 사용법

  1. null 사용

    • 의도적으로 값이 없음을 나타낼 때
    • 객체 참조를 해제할 때
    • API 응답에서 값이 없음을 명시할 때
  2. undefined 사용

    • 변수나 프로퍼티가 아직 초기화되지 않았을 때
    • 선택적 매개변수가 전달되지 않았을 때

주의사항

  1. 명시적 undefined 할당 피하기
    // 권장하지 않는 방법
    let value = undefined;
    

// 권장하는 방법
let value;


2. **null 체크 시 주의**
```javascript
// 안전한 null 체크
if (value === null) {
    // null 처리
}

// 안전한 undefined 체크
if (typeof value === 'undefined') {
    // undefined 처리
}

결론

undefined와 null은 각각의 고유한 용도가 있으며, 상황에 맞게 적절히 사용하는 것이 중요합니다. undefined는 JavaScript 엔진이 자동으로 할당하는 값으로, 변수의 초기 상태를 나타내는 데 사용됩니다. 반면 null은 개발자가 의도적으로 "값이 없음"을 표현할 때 사용하며, 메모리 관리에도 활용됩니다.

이 두 개념을 올바르게 이해하고 사용하면 더 안정적이고 예측 가능한 코드를 작성할 수 있습니다.

참고 자료

  • MDN Web Docs - undefined
  • MDN Web Docs - null
  • JavaScript.info - null과 undefined
반응형
저작자표시 비영리 변경금지 (새창열림)

'Frontend Development' 카테고리의 다른 글

React useEffect 훅 완벽 가이드: 호출 시점과 사용법  (0) 2025.05.27
CSS Flexbox vs Grid: 현대 웹 레이아웃의 두 가지 접근 방식  (0) 2025.05.27
TypeScript에서 interface와 type의 차이점: 언제 무엇을 사용해야 할까?  (0) 2025.05.27
서버 사이드 렌더링(SSR): 현대 웹의 렌더링 전략  (2) 2025.05.27
웹 성능 최적화: 이미지 로딩 속도 개선 전략  (0) 2025.05.27
'Frontend Development' 카테고리의 다른 글
  • React useEffect 훅 완벽 가이드: 호출 시점과 사용법
  • CSS Flexbox vs Grid: 현대 웹 레이아웃의 두 가지 접근 방식
  • TypeScript에서 interface와 type의 차이점: 언제 무엇을 사용해야 할까?
  • 서버 사이드 렌더링(SSR): 현대 웹의 렌더링 전략
Kun Woo Kim
Kun Woo Kim
안녕하세요, 김건우입니다! 웹과 앱 개발에 열정적인 전문가로, React, TypeScript, Next.js, Node.js, Express, Flutter 등을 활용한 프로젝트를 다룹니다. 제 블로그에서는 개발 여정, 기술 분석, 실용적 코딩 팁을 공유합니다. 창의적인 솔루션을 실제로 적용하는 과정의 통찰도 나눌 예정이니, 궁금한 점이나 상담은 언제든 환영합니다.
  • Kun Woo Kim
    WhiteMouseDev
    김건우
  • 깃허브
    포트폴리오
    velog
  • 전체
    오늘
    어제
  • 공지사항

    • [인사말] 이제 티스토리에서도 만나요! WhiteMouse⋯
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 분류 전체보기 (100) N
      • Frontend Development (39) N
      • Backend Development (21) N
      • Algorithm (33) N
        • 백준 (11) N
        • 프로그래머스 (17)
        • 알고리즘 (5)
      • Infra (1)
      • 자료구조 (3)
  • 링크

    • Github
    • Portfolio
    • Velog
  • 인기 글

  • 태그

    tailwindcss
    frontend development
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Kun Woo Kim
JavaScript의 undefined와 null: 그 차이점과 사용법
상단으로

티스토리툴바