728x90
반응형
undefined와 null은 같아보이지만 차이점이 존재한다.
1. undefined
undefined는 원시값(Primitive type) 중 하나로, 자바와는 달리 자바스크립트는 변수에 저장하는 값에 따라서 자료형이 결정된다는 특징이 있다. 이로 인해 자바스크립트 엔진이 해당 변수의 자료형이 정해지지 않는(Undefined) 상태(초기화 되지 않은 상태)임을 나타낼 때 자동으로 undefined를 반환한다.
다음과 같은 경우에 자바스크립트 엔진이 undefined를 자동으로 반환한다.
- 값을 할당하지 않은 변수나 값이 주어지지 않은 인수
- 메서드와 선언에서 변수가 할당받지 않을 때
- 함수가 값을 return하지 않을 때
undefined는 예약어가 아니므로, 변수이름으로 사용할 수 있지만,
유지보수와 디버깅에 어려움을 겪을 수 있기 때문에 피하는 것이 좋다.
2.null
null 또한 원시값(Primitive type) 중 하나로, 개발자가 해당 변수의 값이 의도적으로 비어있음을 나타낼 때 표현한다. null은 존재하는 상태를 나타낸다.
💡 typeof 연산자로 type을 확인하면 undefined는 undefined 타입이고, null은 object 타입이라고 나타난다.

자바스크립트의 유명한 버그이다. 자바스크립트 스펙상 null의 타입이 null이 나와야 하지만, 언어가 만들어진 초창기 실수로 인해 object가 되었다고 한다. 따라서 null인지 확인하기 위해서는 === 으로 null값인지 비교해봐야 한다.
728x90
반응형
'Frontend > Javascript' 카테고리의 다른 글
[TIL] 변수명 짓기 (0) | 2022.05.23 |
---|---|
[TIL] 변수 선언하기 (0) | 2022.05.23 |
[TIL] =, ==, === 의 차이점과 객체의 비교 (0) | 2022.05.10 |
[TIL] 불 값(boolean, 값들의 비교) (0) | 2022.05.10 |
[TIL] 숫자 기본 (parseInt, NaN) (0) | 2022.05.10 |