타입 종류
- primitive type (원시 타입)
- string
- boolean
- undefined
- number
- symbol
- reference type (참조 타입)
- array
- object
- function
- map
- set
typeof 연산자
- 피연산자의 타입을 문자열로 반환하는 타입 검사 연산자
- reference type의 경우 typeof 연산자로 타입 검사를 정확히 하기 어렵다.
- wrapper 객체, null(언어적 오류) ⇒ object
typeof "string"; // string
typeof false; // boolean
typeof 1; // number
typeof undefined; // undefined
typeof null // obejct
typeof Symbol(); // symbol
typeof new String(123); // object
typeof function func() {}; // function
typeof class MyClass {}; // function
instanceof 연산자
- 객체의 prototype chain이 존재하는지 검사하는 연산자
- 최상위 prototype은 Object이기 때문에 타입 검사가 어렵다.
- Obeject.prototype,toString.call() ⇒ 타입 검사에 유용
function func() {};
const array = [];
const date = new Date();
func instanceof Function // true
arr instanceof Array // true
date instanceof Date // true
func instanceof Obejct// true
arr instanceof Obejct// true
date instanceof Obejct// true
Object.prototype.toString.call(func) // [Obejct Function]
Object.prototype.toString.call(arr) // [Obejct Array]
Object.prototype.toString.call(date) // [Obejct Date]
Object.prototype.toString.call(new String(123)) // [Obejct String]
타입 검사는 주의를 기울이며 해야한다.
- 자바스크립트는 동적으로 변하는 언어, 타입이 동적으로 변화
- typeof 연산자로 타입 검사를 정확히 하기 어렵다.
- instanceof 연산자는 최상위 prototype이 Object이기 때문에 타입 검사가 어렵다.