Day 21 · 3/5
🌱 기초 프론트엔드

null과 undefined의 차이

쉽게 이해하기

텅 빈 상자와 아직 안 연 택배 상자를 떠올려보세요. null은 상자를 열어봤는데 의도적으로 아무것도 안 넣은 경우이고, undefined는 아직 상자를 열어보지 않아서 뭐가 들었는지 모르는 상태예요. 둘 다 '비어있음'이지만 의미가 다릅니다.

핵심 정리

null은 '값이 없음'을 명시적으로 표현하고, undefined는 '값이 아직 정해지지 않음'을 의미합니다.

자세히 알아보기

JavaScript에서 null과 undefined는 둘 다 '값이 없음'을 나타내지만, 쓰임새가 다릅니다. undefined는 변수를 선언했지만 값을 할당하지 않았을 때 자동으로 주어지는 값입니다. 반면 null은 개발자가 '이 변수에는 의도적으로 값이 없다'고 명시하기 위해 넣는 값이에요. 예를 들어 사용자 정보를 저장하는 변수를 만들었는데 아직 로그인을 안 했다면, 그 값을 null로 설정할 수 있습니다. '현재 사용자가 없음'을 명확히 표현하는 거죠. 반면 함수가 아무것도 return하지 않으면 자동으로 undefined가 반환됩니다. 실무에서는 null을 '의도적인 빈 값'으로 쓰고, undefined는 '아직 초기화 안 됨' 또는 '존재하지 않음'의 의미로 씁니다. 예를 들어 API에서 데이터를 받아올 때, 선택 항목이 비어있으면 null을 받고, 필수 항목이 빠지면 undefined일 수 있습니다. 타입을 확인할 때 주의할 점이 있는데, typeof null은 'object'를 반환합니다. 이건 JavaScript의 오래된 버그인데 호환성 때문에 고치지 못했어요. 그래서 null 확인은 === null로 직접 비교하는 게 정확합니다.