- 둘 다 원시 자료형 (prmitive) 이다.
- undefined 타입은 undefined값이 유일하고, null 타입도 null값이 유일하다.
undefined
- 아무 값도 할당받지 않은 상태
- 개발자가 의도적으로 할당하는 값이 아닌 자바스크립트 엔진이 변수를 초기화할 때 사용한다.
a. var키워드로 선언한 변수는 호이스팅으로 올라간 후 undefined로 초기화 된다. 그 이후 인터프리터가 해당 소스코드에 도달하면 할당한 값이 들어간다.
b. 변수를 선언한 이후 값을 할당하지 않은 변수를 출력하면 undefined가 반환된다.
null
- 개발자가 변수에 의도적으로 값이 없다고 할 때 사용한다.
- 비어있는, 존재하지 않는 값을 의미한다.
- null을 할당하면 이전에 변수가 참조하던 값을 명시적으로 참조하지 않겠다고 하는 것이다.
- 따라서 자바스크립트 엔진이 이 변수의 메모리 공간에 가비지 컬렉션을 수행한다.
가비지 컬렉션: 더이상 사용하지 않는 메모리를 자동으로 정리하는 것