자바스크립트에서 '값이 없음'을 나타내는 값에는 null과 undefined가 존재한다.
null은 변수를 선언했지만 아무 값도 할당하지 않아 비어있음을 의도적으로 나타내기 위해 할당하는 값이다.
null은 원시 값 중 하나로, 객체가 아니다.
null은 객체가 아니지만 typeof 연산자로 null의 타입을 확인하면 object가 나온다.
typeof null // object
null의 타입이 object라고 나오는 것은 자바스크립트 초기 버전의 버그라고 한다.
null 타입을 체크하려면 엄격한 비교 연산자 ===를 사용하는 것이 좋다.
let foo = null;
foo === null // true
undefined는 변수를 선언했지만 아무 값도 할당하지 않았을 때 변수에 암묵적으로 초기화되는 값이다.
undefined는 null과 마찬가지로 원시 값이고, 타입은 undefined이다.
let a;
typeof a // undefined
아래와 같은 경우 변수가 undefined를 반환한다.
function foo (a, b) {
console.log(a, b); // undefined undefined
}
const a = foo();
console.log(a); // undefined
null
undefined