undefined와 null의 차이점

규갓 God Gyu·2024년 12월 25일

면접질문

목록 보기
35/142

둘 다 nullable한 즉 값이 없다는 의미이지만 차이점은 확실히 존재한다
undefined는 js에서 자동으로 할당되는 값임

변수를 선언하고, 아무 값도 할당하지 않는다면 그 변수에 js는 undefined를 자동으로 부여함
ex - let a;라는 변수를 선언만 하고 값을 넣지 않으면, js에 자동으로 a에 undefined라는 값을 할당하게 됨

반면

null은 개발자가 의도적으로 할당하는 값
특정 변수에 값이 없음을 명확히 표현하기 위해 null을 넣을 수 있음
ex - let b = null;이면, b는 일부러 값을 비워놨다는 의도를 나타냄

즉, undefined는 값을 아직 할당하지 않은 상태 / JS가 자동으로 부여하는 값

반면

null은 의도적으로 값을 비워 둔 상태, 개발자가 직접 할당한 값
그래서 느슨한 비교인 ==에선 null 과 undefined가 같게 처리되어도,
엄격한 비교 연산자 === 에선 다르게 취급됨

========================================

null은 개발자가 명시적으로 메모리를 해제하고자 할 때 사용하는 방법
객체를 참조하던 변수를 null설정 시, 해당 변수는 더 이상 그 객체를 가리키지 않아 참조가 끊어짐
이렇게 참조가 끊기면 JS의 가비지 컬렉터는 이 객체가 더 이상 사용되지 않는다고 판단해 메모리에서 이를 제거함

ex - 디용량 데이터를 담는 객체가 있을 때, 더 이상 사용하지 않는다면 그 객체를 null로 설정해서 가비지 컬렉션 대상이 되도록 유도시킬 수 있음

반면 undefined는 js 엔진이 자동으로 할당하는 값으로, 메모리 해제와 직접적인 관련 없음
변수가 undefined여도 가비지 컬렉션 대상이 되지 않고, 이 값 자체가 메모리 해제를 유도하지도 않음
단지 값이 정의되지 않음을 나타낼 뿐이고, undefined로 설정한다해서 js가 해제 대상으로 인식하지도 않음

profile
웹 개발자 되고 시포용

0개의 댓글