자바스크립트 같은 언어는 타입개념이 없다고 생각하는 사람들이 많다.
하지만, 자바스크립트에도 7개의 내장 타입이 있다.
- null
- undefined
- boolean
- number
- string
- object
- symbol(ES6부터 추가)
값에는 타입이 있지만, 변수엔 따로 타입이란 없다.
자바스크립트는 타입 강제를 하지 않는다.
undefined 는 접근 가능한 스코프에 변수가 선언되었으니 현재 아무런 값이 없다는 말
is not defined는 접근 가능한 스코프에 변수 자체가 선언조차 되지 않은 상태
var a;
type of a; // "undefined"
type of b; // "undefined"
선언되지 않은 변수도 typeof하면 undefined로 나온다.
b는 선언조차 하지 않았지만 브라우저는 오류라고 처리하지 않는다.
이것이 typeof만의 독특한 안전가드(Safety Guard)다.
위와 같은 부분 때문에 가끔 typeof로 체킹을 했을 때 선언한 변수인지 체킹할 때
헷갈리는 부분이 생기기도 하니 주의해야한다.