-
카테고리
-
세부 분야
프로그래밍 언어
-
해결 여부
해결됨
선생님 질문있습니다.
20.09.02 12:06 작성 조회수 79
4
비교 연산자를 사용 할 때는 숫자 변환을 안하는건가요?
console.log("3" > "1");
위의 비교 연산은 숫자 3과 숫자 1로 비교를 하는게 아니고 String타입으로 유니코드 등록 순서로 비교하는건가요?
혹시
console.log(3 > "2");
코드의 결과가 true가 나오는데 한쪽만 string일 경우니까 false가 나올줄 알았는데 true가 나오는 것은 "2"를 숫자 2로 변환한것으로 봐도 되는건가요?
그렇다면 console.log("3" > "1"); 의 경우도 숫자로 비교한건가요?
답변을 작성해보세요.
8
김영보
지식공유자2020.09.02
좋은 질문입니다. 헷갈릴 수도 있습니다. 설명을 추가해야 되겠습니다.
한 쪽이 Number 타입이면 우선 다른 쪽의 값을 Number 타입으로 변환을 시도합니다. 이것은 비교하기 전에 우선 타입을 맞추기 때문입니다.
1. (3 > "2")에서 3이 Number 타입이므로 먼저 "2"를 Number 타입으로 변환을 시도하며, 변환할 수 있으므로 2로 변환하여 비교합니다. 모두 Number 타입이므로 비교할 수 있으며 true가 됩니다.
2. ("A" > 2)에서 "A"를 Number 타입으로 변환할 수 없으며, 타입이 다르므로 false가 됩니다.
3. ("A" > "2")는 모두 타입이 같으며 String 타입이므로 유니코드 등록 순서로 비교합니다. "A"는 0065이고 "2"는 0050이므로 true가 나옵니다.
4. ("3" > "2")는 모두 타입이 같으며, "3"의 유니코드 포인트 값은 0051입니다.
답변 1