자바스크립트는 동적으로 변하는 언어이므로, 타입 역시 동적으로 변한다. 따라서 타입을 체킹해주는 방식을 소홀하게 대해서는 안 된다.
피연산자를 평가해서 그 타입을 문자열로 리턴한다.
typeof 'string'
typeof true
typeof undefined
typeof 123
typeof Symbol()
편하긴 하지만, 한계점이 있다. 참조 타입은 typeof로 분별해내기가 굉장히 어렵다.
Class의 경우
클래스 객체인데도 function으로 판별한다.
function myFunc() {}
class MyClass {}
console.log(typeof myFunc) // function
console.log(typeof MyClass) // function
Reference value의 경우
Object로 판별한다.
const str = new String('string')
console.log(typeof str) // Object
null의 경우
Object로 판별한다. 언어적인 오류가 맞다. 자바스크립트가 널리 쓰이면서 이제는 건들 수 없는 에러가 되어 버렸다고 한다.
typeof null // Object
그렇기 때문에 typeof를 맹신해서는 안 된다.
객체의 프로토타입 체인을 검사하는 연산자이다.