- 0
- 2
undefined와 null의 차이점
답변 확인
1. 정의
undefined
와 null
은 자바스크립트에서 모두 값이 없음을 나타냄
undefined
: 자바스크립트에서 자동으로 할당 되는 값으로, 변수는 선언되었지만 값이 할당 되지 않은 상태를 나타냄
let a;
console.log(a); //undefined
null
: 개발자가 의도적으로 값이 비어 있음을 나타내기 위해 명시적으로 할당하는 값
let b = null;
console.log(b); // null
2. 주요 차이점
특징 | undefined |
null |
---|---|---|
의미 | 값이 아직 정의되지 않음 | 값이 비어 있음을 의도적으로 명시 |
할당 주체 | 자바스크립트 엔진이 자동으로 할당 | 개발자가 명시적으로 설정 |
타입 | undefined | object (타입 버그로 인해 표시됨) |
가비지 컬렉션과의 관계 | 메모리 해제와 직접적인 관련이 없음 | 객체 참조를 제거하여 가비지 컬렉션을 유도 |
3. 동등 비교와 일치 비교
- 동등 비교 (==):
null
과undefined
는 동등하게 취급.
console.log(null == undefined); // true
- 일치 비교 (===):
null
과undefined
는 타입이 다르므로 같지 않음.
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일
오오 ~~ :) 너무 글 좋네용