타입

thor.kim·2020년 1월 25일
0

I don't know JS

목록 보기
1/3
post-thumbnail

내장타입

내장타입 일곱가지 중 null을 제외한 여섯가지는 자신의 명칭과 동일한 문자열을 반환한다.

null	   // typeof null === "object"
undefined  // typeof undefined === "undefined"
boolean    // typeof true === "boolean"
number     // typeof 30 === "number"
string     // typeof "30" === "string"
object     // typeof { a: 30 } === "object"
symbol     // typeof Symbol() === "symbol"

null에 관한 내용은 일종의 버그 중 하나라고 볼 수 있는데, 20년동안 이렇게 돌아가던 코드를 지금와서 수정하자니 하위호환성 등의 문제로 고쳐지기는 쉽지 않을 듯 하다.

이 때문에 null값을 정확히 확인하기 위해서는 다음과 같은 조건이 필요하다.

var a = null;
(!a && typeof a === "object")

객체의 하위타입

두 가지 object의 하위타입

function a(b, c) {
}
typeof a === "function"
a.length === 2 // 함수에 선언된 인자의 개수 2개(b, c)를 의미
typeof [1, 2, 3] === "object"

값은 타입을 가진다

자바스크립트는 타입강제가 없으므로 typeof를 사용하는 것은 변수에 들어있는 값의 타입이 무엇인지 알아내는 것이다.

var a = 42;
typeof a; // "number"
a = true;
typeof a; // "boolean"

typeof는 항상 문자열을 리턴한다.

typeof typeof 42; // "string" // typeof 42 === "number"

undefined undeclared

javascript는 값이 없는 것과 선언되지 않은 것을 undefined로 처리한다. 이 때문에 많은 혼란이 생길 수 있다. 하지만 명확히 다른것으로, 정확히 확인하기 위해서는 typeof를 사용하여 한번 더 체크하는 로직이 필요하다.

  • 내장 API가 존재하는지 유무를 판단하고 싶을 때
  • 전역 변수를 사용해야 할 때, 해당 변수가 정의 되었는지 확인하고 싶을 때
profile
회사원에서 개발자로

0개의 댓글