ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • JS - 추상관계비교
    프로그래밍/Js 2021. 2. 24. 18:22

    JS에서는 피연산자 끼리 비교시 피연산자가 모두 문자열인지 아닌지에 따라 구분된다.

     

     

    • 문자열 vs 문자열 x

    예를 들어 값의 type이 string 과 number인 비교하면

     

    피연산자 중 어느 한쪽이라도 type이 string이 아닐 경우 피연산자 모두 number 타입으로 강제 변환 후 비교한다. 따라서 결과는 위 사진과 같다.

     

    • 문자열 vs 문자열

    type이 문자열인 피연산자끼리의 비교는 문자 단위로 비교한다. 처음부터 "0"이 어휘상 "4"보다 작은 값이기 때문에 c>d는 true이다.

     

    마찬가지로 비교 시  e는 "4, 2"로 ,f는 "0, 4, 3"으로 강제변환되서 문자열화 되기 때문에 위 예시도 마찬가지이다.

     

     

    • 객체 vs 객체

    객체 끼리 비교했을 경우 만약 연산자가 == 일때는 같은 래퍼런스를 참조한다면 true이다.

    여기서는 같은 레퍼런스를 참조하는 것이 아니기 때문에 false.

    근데 이상한 것은 g>h, g<h는 보시다시피 false인데, g>=h , g<=h는 true이다.

    단순히 <= 이 '같거나 더 작은' 이라는 의미만 있다고 생각했던 나로써는 상당히 놀라웠다.

    자바스크립트 엔진은 <=연산자를 '더 크지 않은'(!(g>h))의 의미로 해석한다. 쉽게말해 g<=h 는 !(g>h)

    따라서 g>h가 false이기 떄문에 그것을 부정하는 g<=h는 true라는 놀라운 사실.(처음알았다)

    '프로그래밍 > Js' 카테고리의 다른 글

    객체로서의 함수와 기명 함수 표현식  (0) 2021.07.02
    JS-객체  (0) 2021.05.12
    JS-parseInt 문자열→숫자로 파싱  (0) 2021.02.22
    JS - Boolean 타입 강제변환  (0) 2021.02.18
    Javascript-타입  (0) 2021.02.12
Designed by Tistory.