undefined & null

김민찬·2022년 10월 13일
0

JavaScript

목록 보기
18/23
post-thumbnail

"모던자바스크립트 Deep Dive - 이웅모"를 일고 정리한 글입니다.

undefined & null

설명

  • undefined를 직역하면 '정의되지 않은'이라는 뜻이다.
    • 자바스크립트에서 '정의되지 않았다'라는 뜻은 변수에 값을 할당하여 변수의 실체를 명확히 하지 않았다는 뜻이다.
  • null은 변수에 값이 없다는 것을 의도적으로 명시할 때 사용된다.

  • 변수를 선언하고 확보된 메모리 공간에 처음 할당이 이뤄질 때까지 빈 상태를 내버려두지 않고 자바스크립트 엔진이 undefined로 초기화 한다.
  • 이처럼 undefined는 개발자가 의도적으로 할당하기 위한 값이 아니라 자바스크립트 엔진이 변수를 초기화할 때 사용하는 값이다.
  • 자바스크립트 엔진이 변수를 초기화하는 데 사용하는 undefined를 개발자가 의도적으로 변수에 할당한다면 undefined의 본래 취지와 어긋날뿐더러 혼란을 줄 수 있으므로 권장하지 않는다.

  • 변수에 null을 할당하는 것은 변수가 이전에 참조하던 값을 더 이상 참조하지 않겠다는 의미이다.
    • 이는 이전에 할당되어 있던 값에 대한 참조를 명시적으로 제거하는 것을 의미하며, 자바스크립트 엔진은 누구도 참조하지 않는 메모리 공간에 대해 가비지 콜렉션을 수행한다.

공통점

  • undefinednull의 공통점은 둘 다 그 자신이 유일한 값이다.
    • undefined 타입은 undefined가 유일하고 null 타입은 null이 유일하다.

차이점

  • 설명에서 언급하였듯이, undefined는 정의되지 않은 값이므로, 빈값임을 명시하고 싶을때는 null을 변수에 할당해 주어야 한다.

주의점

  • typeof로 변수의 타입을 찾을 때
    • undefinedtypeofundefined가 출력된다.
    • nulltypeof로 확인하면 object가 출력된다.
    • null과의 비교로 null 값인지 여부를 체크할 수 있다.
typeof undefined // 'undefined'
typeof null // 'object'
null === null // true
profile
두려움 없이

0개의 댓글