값이 없는 변수의 값은 undefined이고 typeof 반환값도 undefined.
'값이 없는' 것과 '선언되지 않은' 것은 다르다. 둘다 영어로 undefined라 주의가 필요하다.
var banana;
banana; // undefined
apple; // ReferenceError apple은 정의되지 않았습니다.
undefined 나 apple은 정의되지 않았다는거나 영어로 하면 결국 똑같은 말...
찾지 못했다거나 선언되지 않았다고 에러메세지를 만들었으면 좋았을 것이다.
var abc;
typeof abc; // "undefined"
typeof ddd; // "undefined"
typeof 연산자의 반환값은 더 헷갈리게 만든다.
하지만 typeof의 이런 점이 선언되지 않은 변수(값)을 체크할 때 선언되지 않았을 경우 에러를 내뿜는 것을 막아주는 안전가드 역할을 하기도 한다.