• 0
  • 2
January 07, 2025

undefined와 null의 차이점

답변 확인

1. 정의

undefinednull은 자바스크립트에서 모두 값이 없음을 나타냄

  • undefined: 자바스크립트에서 자동으로 할당 되는 값으로, 변수는 선언되었지만 값이 할당 되지 않은 상태를 나타냄
let a;
console.log(a); //undefined
  • null: 개발자가 의도적으로 값이 비어 있음을 나타내기 위해 명시적으로 할당하는 값
let b = null;
console.log(b); // null

2. 주요 차이점

특징 undefined null
의미 값이 아직 정의되지 않음 값이 비어 있음을 의도적으로 명시
할당 주체 자바스크립트 엔진이 자동으로 할당 개발자가 명시적으로 설정
타입 undefined object (타입 버그로 인해 표시됨)
가비지 컬렉션과의 관계 메모리 해제와 직접적인 관련이 없음 객체 참조를 제거하여 가비지 컬렉션을 유도

3. 동등 비교와 일치 비교

  • 동등 비교 (==): nullundefined는 동등하게 취급.
console.log(null == undefined); // true
  • 일치 비교 (===): nullundefined는 타입이 다르므로 같지 않음.
console.log(null === undefined); // false

4. 메모리 관리와의 관계

  • null :
    • 어떤 데이터(객체)를 더 이상 사용하지 않겠다고 개발자가 직접 선언
    • 이렇게 선언하면 자바스크립트가 "아, 이 데이터는 필요 없구나!"라고 판단하고 메모리에서 삭제
  • 메모리 관리
    • 참조가 끊긴 객체를 가비지 컬렉션 대상으로 만듦
let largeObject = { data: 'big data' }; // 큰 데이터를 가진 객체
largeObject = null; // "이 데이터는 필요 없어"라고 선언
// 이후 자바스크립트가 메모리에서 삭제해 줌
  • undefined :
    • 변수는 선언했지만 값을 아직 넣지 않은 상태
    • 이건 자바스크립트가 자동으로 "값이 정의되지 않았음"
  • 메모리 관리
    • undefined는 "아직 값이 없음"을 뜻할 뿐, 자바스크립트가 "이건 필요 없으니 지워야겠다"라고 생각하지 않음
let a; // 값이 없음
console.log(a); // undefined (자바스크립트가 자동으로 지정)

* 가비지 컬렉션(Garbage Collection)이란?

  • 가비지 컬렉션은 자바스크립트 엔진이 더 이상 사용되지 않는 메모리(즉, 필요 없는 데이터) 를 자동으로 정리해 주는 기능
  • 쉽게 말해, 가비지 컬렉션은 청소 로봇과 같음, "이 데이터는 이제 안 쓰이니까 지워도 되겠지?"라고 판단해서 메모리에서 삭제해주는 청소 로봇

정리

  • undefined는 값이 아직 할당되지 않은 상태를 나타내며, 자바스크립트 엔진이 자동으로 할당.
  • null은 값이 비어 있음을 명시적으로 나타내기 위해 개발자가 설정하며, 메모리 해제와 관련이 있음.
  • 가비지 컬렉션과 관련해서 null은 객체 참조를 제거하는 데 사용되며, undefined는 메모리 관리와 직접적인 관련이 없음.

Top comments (2)

  • DavidYang2월 19일

    우와 댓글이다~

  • Olivia2월 19일

    오오 ~~ :) 너무 글 좋네용