- ECMAScript 언어 타입에는 Undefined, Null, Boolean, String, Number, Object가있다.
- 타입이란 자바스 크립트 엔진, 개발자 모두에게 어떤 값을 다른 값과 분별할 수 있는, 고유한 내부 특성의 집합 이다.
- 거의 모든 자바스크립트 프로그램에서 강제변환이 일어나므로 타입을 확실하게 인지하고 사용하는 것이 중요하다.
- 강제변환은 다양한 방식으로 일어난다.
내장 타입
- null ( falsy, object )
- undefined
- boolean
- number
- string
- object
- symbol
function
- object의 하위 타입
- 함수에 선언된 인자 개수는 함수 객체의 length 프로퍼티로 알 수 있다.
배열
- 숫자 인덱스를 가지며, length 프로퍼티가 자 동으로 관리되는 등의 추가 특성을 지닌, 객체의 하위 타입이라 할 수 있다.
값과 변수
- 값에는 타입이 있지만, 변수엔 따로 타입이란 없다. 변수는 언제라도, 어떤 형태의 값이라도 가질수 있다.
- 자바스크립트는 타입 강제를 하지 않는다.
- 값이 없는 변수의 값은 undefined이며, typeof 결과는"undefined"다.
undefined와 undeclared
- undefined → 접근 가능한 스코프에 변수가 선언되었으나 현재 아무런 값도 할당되지 않은 상태
- undeclared → 접근 가능한 스코프에 변수 자체가 선언조차 되지 않은 상태
- ex) b is not defined
typeof의 safe guard
- 선언되지 않은 변수는 typeof를 하면 undefined로 나온다
// ERROR
if (variable) {
console.log( "디버깅을 시작합니다" );
)
// 이렇게 해야 안전하게 존재 여부를 체크할 수 있다.
if (typeof variable !== "undefined") { console.log( variable ) };
- 임의로 정의한 변수를 쓰지 않더라도 이런 식으로 체크하는 것이 편리하다.