null은 값이 의도적으로 비어있다는 것을 표현한다. (의도적인 부재intentional absence)
foo; //정의된적이 없기 때문에 refrence error: foo is not defined
let foo=null;
foo; //null
하지만 신기하게도 null의 타입을 조회해보면 객체라고 출력된다. 이는 javascript 실행에서의 오류라고 간주한다.
undefined는 변수가 선언되었으나 아직 그 변수의 값이 할당되지 않았음을 의미한다.
var foo;
consol.log(foo); // undefined
null과는 다르게, undefined의 타입은 오로지 undefined 뿐이다.
console.log(typeof foo); // undefined
변수의 값으로 undefined를 할당받은 경우, 메서드와 선언에서도 변수가 값을 할당받지 않은 경우에 undefined를 반환한다.