ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 20221016 TIL 신기한 JS세계
    TIL 2022. 10. 17. 11:39

    https://dev.to/neutrino2211/avoiding-weird-javascript-behaviour-true--true--2-but-true--1-pn9

    JS는 예상과 다른 결과를 보여주는 경우가 위의 경우처럼 많다.

    왜 저런 결과가 나오는지 모를 때는 JS가 이상하다고 생각했었는데,

    JS가 자동으로 타입 변환을 해주는 과정(coercion)을 이해하면

    그나마 JS의 직관과 다른 부분들을 예상할 수 있다.

    자동 형변환 규칙

    1. string + 무언가

    무언가가 string으로 변환되어 문자열끼리 연결된다.

    ex. 9 + “1” === “91”

    1. +이외의 연산

    -, *, /, %등의 연산은 number타입으로 모두 변환되어 연산된다.

    ex. “1” - “1” === 0

    91 - “1” === 90

    true * “3” === 3

    1. boolean + number

    boolean이 number로 형변환된다.

    true → 1, false → 0

    ex. true + 1 === 2

    1. ==

    같은 타입이라면 ===와 동일하게 연산이 진행된다.

    만약 같은 타입이 아니라면 null이나 undefined는 null이나 undefined와 비교될 때만 true이고 아닐 때는 false를 반환한다.

    만약 같은 타입이 아니고 null, undefined나 symbol이 아니라면 숫자로 변환되어 비교된다.

    ex.
    10 == ‘10’
    true == 1

    밈의 모든 것을 이 규칙들만으로 설명할 수는 없지만, 이 규칙들을 알면 그래도 많은 자동형변환을 예상할 수 있다.

    하지만 코딩을 할 때는 항상 명확하게 type casting을 이용하는 게 가독성도 좋고 예상하기도 쉬우니 자동 형변환에 의지하지 말자.

    댓글

Designed by Tistory.