undefined, null, undeclared의 차이에 대해 설명해주세요.

최관수·2023년 9월 13일
1

기술면접

목록 보기
27/58
post-custom-banner

내용 정리

  • undefined는 개발자가 의도적으로 할당한 값이 아니라 자바스크립트 엔진에 의해 초기화된 값이라고 볼 수 있습니다. 다시 말해 값이 없는 게 아니라 값이 할당된 적이 없다는 뜻입니다. null은 의도적으로 변수에 값이 없다는 것을 명시할 때 사용합니다. 그리고 undeclared는 접근 가능한 스코프에 변수 선언조차 되어 있지 않은 상태를 뜻합니다.

꼬리 질문

  • undefined를 개발자가 의도적으로 할당하지 않았는데도 할당된 경우는 어떤 과정에 의해서 그렇게 할당되는 건지 설명해주실 수 있을까요?
    • 이는 변수 선언에 의해 확보된 메모리 공간을 처음 할당이 이루어질 때까지 빈 상태(대부분 비어있지 않고 쓰레기 값(Garbage value)이 들어 있다)로 내버려두지 않고 자바스크립트 엔진이 undefined로 초기화하기 때문이다. 이처럼 undefined는 개발자가 의도적으로 할당한 값이 아니라 자바스크립트 엔진에 의해 초기화된 값이다. 때문에 변수의 값이 없다는 것을 명시하고 싶은 경우는 undefined를 할당하는 것이 아니라 null을 할당하는 편을 권장한다.
  • typeof를 사용해서 null을 확인해보면 어떻게 나오는지 혹시 아시나요?
    • typeof null이 "object"로 반환되는 것은 JavaScript의 역사적인 설계 결함으로 인한 것이며, 이는 현재까지도 수정되지 않은 상태입니다. 이를 고려하여 코드를 작성할 때에는 null을 확인하기 위해 엄격한 비교 연산자(===)를 사용하거나, 다른 방법을 사용하여 확인하는 것이 좋습니다.
  • null과 undefined를 느슨한 비교와 엄격한 비교 했을 때 차이에 대해 설명해주세요

참고자료

profile
평소엔 책과 영화와 음악을 좋아합니다. 보편적이고 보통사람들을 위한 서비스 개발을 꿈꾸고 있습니다.
post-custom-banner

0개의 댓글