책정리/Deep Dive Javascript

자바스크립트에서 undefined와 null의 차이

뽀글보리 2023. 11. 23. 06:59
반응형
var score;

 

다음과 같이 변수를 선언할 때, 자바스크립트는 해당 메모리 공간을 undefiend로 초기화한다. 따라서 변수를 선언한 이후 값을 할당하지 않으면, undefined가 반환된다.

 

따라서, 변수를 참조했을 때 undefined가 반환된다면, 선언 이후 값이 할당된 적 없는 초기화되지 않은 변수라는 것을 알 수 있다.

 

null은 이와 다르게 변수에 값이 없다는 것을 명시하고 싶을 때 사용해야 한다. 변수에 null을 할당하는 것은 이전에 할당되어 있던 값에 대한 참조를 명시적으로 제거하는 것이며, 자바스크립트 엔진은 이 공간에 대해 가비지 콜렉션을 수행할 것이다.

 

예시로, document.querySelector 메서드는 조건에 부합하는 HTML 요소를 검색할 수 없을 경우 null을 반환한다.

 

물론, undefined를 할당한다고 가비지 콜렉션이 수행되지 않는 것은 아니다.

null을 할당하는 것이 더 성능적으로 이득이라는 말도 있지만, 큰 차이는 없다고 한다. 이는 가비지 컬렉션 기능이 예전보다 좋아졌기 때문이다.

따라서 undefined를 할당해도 큰 문제는 없지만, 변수의 정의에 따라 구분하여 사용하는 것이 좋을 것 같다.

 


* 참고

- 모던 자바스크립트 deep dive javascript 6장

- https://velog.io/@iamhyunji/%EA%B0%9C%EB%85%90-%EA%B0%80%EB%B9%84%EC%A7%80-%EC%BB%AC%EB%A0%89%EC%85%98-null-vs-undefined

- https://webisfree.com/2017-04-27/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%9D%98-%EB%A9%94%EB%AA%A8%EB%A6%AC%EC%97%90%EC%84%9C-%ED%95%B4%EC%A0%9C%ED%95%98%EA%B8%B0-%EC%9C%84%ED%95%9C-%EB%B0%A9%EB%B2%95%EC%9C%BC%EB%A1%9C-undefined%EA%B0%80-%EC%95%84%EB%8B%8C-null%EC%9D%84-%EC%93%B0%EB%8A%94-%EC%9D%B4%EC%9C%A0%EB%8A%94-%EB%AD%94%EA%B0%80%EC%9A%94

반응형