undefined와 null 차이 쉽게 이해하기
값이 없다는 의미가 둘로 나뉘어 에러 원인을 찾기 어려운 상황
- 문제 상황 확인
- 짧은 코드로 재현
- 브라우저에서 결과 점검
undefined와 null 차이에서 먼저 볼 부분
undefined는 아직 값이 정해지지 않은 상태에 가깝고, null은 의도적으로 비워둔 값에 가깝습니다.
undefined는 변수를 선언했지만 값을 넣지 않았거나, 객체에 없는 속성을 읽을 때 자주 나타납니다. 개발자가 의도하지 않은 상황일 수 있습니다.
null은 비어 있음을 명시적으로 표현할 때 사용합니다. 예를 들어 아직 선택된 사용자가 없다는 상태를 일부러 나타낼 수 있습니다.
API 데이터에서는 null이 자주 등장합니다. 화면에 출력하기 전에 null과 undefined를 모두 고려하면 예외를 줄일 수 있습니다.
사용자 정보 객체
let selectedUser;
console.log(selectedUser); // undefined
selectedUser = null;
console.log(selectedUser); // null
const user = { name: "AG FE", email: null };
이 예제는 그대로 복사해서 확인하는 것보다 한 줄씩 바꿔보는 쪽이 더 도움이 됩니다. 태그 이름, 선택자, 변수 이름, 함수 실행 위치를 조금씩 바꾸면 어떤 부분이 결과에 영향을 주는지 직접 확인할 수 있습니다.
undefined와 null 차이 쉽게 이해하기 비교 기준
| 구분 | undefined | null |
| 의미 | 아직 값 없음 | 의도적 비움 |
| 발생 | 미할당, 없는 속성 | 직접 지정 |
| 처리 | 기본값 고려 | 빈 상태 처리 |
잘못 작성했을 때 나타나는 흐름
JavaScript 글은 값이 언제 만들어지고 함수가 언제 실행되는지를 순서대로 따라가면 이해가 쉬워집니다.
console.log는 단순 확인용이 아니라 현재 값의 모양과 실행 흐름을 확인하는 가장 기본적인 디버깅 도구입니다.
DOM을 다루는 코드는 HTML 요소가 먼저 준비되었는지 확인해야 하며, 선택 결과가 null인지 보는 습관이 중요합니다.
브라우저에서 직접 확인하는 순서
먼저 화면에 나타나는 결과를 보고, 그다음 코드에서 방금 수정한 부분을 확인하세요. 결과가 예상과 다르다면 콘솔 오류, 파일 경로, 선택자 이름, 태그 닫힘, 실행 순서 중 하나가 흔한 원인입니다.
초보 단계에서는 정답 코드를 한 번에 외우기보다 실패한 코드와 수정한 코드를 나란히 비교하는 방식이 좋습니다. 이 글의 예제를 기준으로 작은 값을 바꿔보면 다음 글을 읽을 때도 기준이 더 선명해집니다.
실습 후 점검할 항목
- 객체 속성을 읽기 전 존재 여부 확인하기
- API 응답에서 null 가능성 확인하기
- 기본값이 필요한지 정하기
- 빈 상태 문구를 준비하기
공식 문서로 더 확인하기: JavaScript 공식 문서