[Clean-Code-JS] 타입 다루기

soho·2023년 3월 20일

Clean-Code-JS🧹

목록 보기
2/3
post-thumbnail

1. 타임검사

자바스크립트 언어는 동적인 타입의 언어이기 때문에 타입검사가 어렵다.
⇒ 따라서 상황에 맞게 잘 찾아서 검사를 해야한다.

📍 primitive vs reference

primitive는 '문자열'로 반환
e.g. true, undefined, 123, Symbol() 등이 해당

reference는 대부분 Object로 반환


  • 검사 방법
    • typeof

    • instanceof

    • Object.prototype.toString.call('')

      instanceof 연산자의 경우, 결국 최상위인 object를 반환하는 문제점이 있어서 Object.prototype.toString.call('') 이런식으로 검사하는 것도 좋다.


2. undefined와 null

https://velog.velcdn.com/images/cactumer/post/7c64f450-77f7-4c40-9464-dc164aeb81ed/image.png

  • undefined, null ⇒ 값이 없거나(명시적인 표현) 정의되지 않은 것을 말한다.
  • null은 0이라는 숫자로 표현되지만 undefined는 NaN이라고 표현된다.


    여기서 typeof 오류!

typeof undefined는 undefined가 반환되는데
typeof null는 object 반환 ⇒ 자바스크립트 오류


typeof가 만능은 아니니 쓰임을 조심해야 한다.


3. eqeq 줄이기, 형 변환 주의하기

  • eqeq란 Equality 동등연산자(==)
  • 느슨한 검사때문에 형 변환이 일어남
    ‘1’ == 1
    
    1 == true
    
    0 == false
    

  • 해결
  1. 엄격한 동등연산자 사용하기(== 대신 ===)
    strict한 검사를 해야 오류를 줄일 수 있다.
  2. 자바스크립트가 형 변환을 할 때는 암묵적인 변환(타입)을 한다.
    ⇒ 따라서 사용자가 형 변환을 했을 때는 명시적인 변환(타입) 하는게 좋다.

4. isNaN

isNaN = is Not a Number = 느슨한 검사이기 때문에

Number.isNaN 엄격한 검사로 안전하게 사용하자

isNaN(123 + 'test') = true

Number.isNaN(123 + 'test') = false  //엄격한 검사




강의 출처 : Udemy - 클린코드 자바스크립트

profile
Aal izz well!

0개의 댓글