본문 바로가기

언어/Javascript

[클린코드 javascript] 타입 체크

자바스크립트는 동적 타입 언어이다.

=> 단순히 타입 체크 ( typeof )를 할 경우 오류를 범할 수 있다

 

자바스크립트에는 원시 타입 변수와 참조 타입 변수가 존재하는데,

 

단순 타입 체크로 원시 타입 변수를 체크하는 경우에는 문제가 대부분 없다. 하지만 참조 변수의 경우 typeof를 한다면 모두 object로 나올 것이다. 

 

그래서, instanceof를 사용.

 

Const arr = [];

Const func = function() {};

Const date = new Date();



Arr instanceof Array // true

Func instanceof function // true

Date instanceof Date // true

 

하지만 여기서 instanceof Object를 찍어보면 다 true로 나온다. 그 이유는 Reference변수의 경우 최상위는 Object이기 때문이다. 

 

 

이보다 조금 더 구체적으로 확인하려면

Object.prototype.toString.call("aa") // [object String]

 

이외에 stackoverflow를 찾아보면, 

다양한 함수를 만들어서 쓰고있었다.

 

타입체크하면 빠질 수 없는 undefined null에 대해 알아보자.

undefined는 글자 그대로 정의되지 않은 상태.

즉 선언만 한 상태.

null은 값이 비어있는 상태 이다.

null과 undefined를 잘 설명한 그림.

강의에선 아래와 같은 다양한 예시를 들어주며 null과 undefined의 혼란성을 말했다. (설명 듣고 처음으로 혼란이 가중되었다..)

!null // true
!!null // false

null === false // false
!null === true // true

null + 123 // 123

let variable;

typeof variable // undefined

undefined + 10 // NaN

!undefined // true

undefined == null // true
undefined === null // false
!undefined === !null // true

 


그렇기에 결론적으로 단순하게 생각하는 법도 알려주었는데,

 

undefined 는 정의되지 않다 null 은 값이 없다는 것이다.

undefined 는 NaN 이지만 null 은 숫자적으로 표현하였을때 0에 가깝다. (0은 또아님..)

undefined 의 type 은 undefined 이지만 null 의 type 은 object 이다.

즉 이 둘의 쓰임을 조심해야만 한다.