-
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 -