• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    해결됨

선생님 질문있습니다.

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"); 의 경우도 숫자로 비교한건가요?

답변 1

답변을 작성해보세요.

8

좋은 질문입니다. 헷갈릴 수도 있습니다. 설명을 추가해야 되겠습니다.
한 쪽이 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입니다.