LHJ

I'm a FE developer.

3-9. 연산자(Operator) / 관계 연산자

18 Nov 2020 » js_beginner

25. 관계 연산자

  • 관계(Relational) 연산자

    • <, >, <=, >= 연산자
    • instanceof 연산자
    • in 연산자

  • instanceof, in 연산자

    • 사전 설명이 필요하므로 관련된 곳에서 다룹니다.

> 연산자

  • 부등호 : Greater-than
  • 양쪽이 Number 타입일 때

    • 왼쪽이 오른쪽보다 크면 true 반환, 아니면 false 반환

        console.log((1 + 2) > 1); // true
      
      1. 먼저 표현식을 평가하여 값을 구합니다.
      2. 3이 1보다 크므로 true를 반환합니다.
      3. 수학 값으로 비교한다고 말합니다.

  • String 타입 비교

    • 한 쪽이 String 타입이면 false

        console.log(1 > "A"); // false
      
      1. 숫자와 문자열을 비교하면 false
    • 양쪽이 모두 String 타입이면 유니코드 사전 순서로 비교

        console.log(("\u0033" > "\u0032")); // true
        console.log("A" > "1"); // true
        console.log("" > ""); // false
      
      1. 코드 포인트
        \u0033: 3, \u0032: 2
      2. \u0041: A, \u0031: 1
      3. 코드 포인트는 유니코드를 등록할 때 부여
      4. 유니코드 등록 순서로 비교
        유니코드 사전 순서로 비교한다고도 말함
      5. “가”와 “다”도 유니코드 사전 순서로 비교
        “가”, “나”, “다” … 이 순서로 등록했기 때문에 “가”의 코드 포인트 값이 “다”의 코드 포인트 값보다 작습니다.
        이와 같은 것이 사용되는 곳은 sort(분류), 흔히 말하는 가-나-다 순서, 그때 이 코드 포인트를 사용합니다.
        값이 작고 크고의 문제가 아니라 “가”를 먼저 등록했고 “다”를 나중에 등록했기 때문에 코드 포인트 값이 작은 것이 부여되었을 뿐입니다.
        으로 분류를 하게되면 “가나다” 순으로 나오게 될 것입니다.
    • 문자 하나씩 비교

        console.log("A07" > "A21"); // false
      
      1. 왼쪽에서 오른쪽으로 문자 하나씩 비교
        A와 A가 같으므로 다음을 비교
        0과 2를 비교하게 되며, false 반환
      2. 결정이 되면 다음 것은 비교하지 않습니다.

A07 전체를 나타내는 코드 포인트는 없습니다. 물론 A21도 마찬가지입니다.
이때, “A”, “0”, “7” 각각의 문자에 대해서는 코드 포인트가 있습니다.
그래서 문자 하나하나씩 비교합니다.
위에서 “A”와 “A”는 같습니다.
그 다음 “0”과 “2”를 비교합니다. 여기서 결정이 납니다.
그렇기 때문에 “7”과 “1”은 비교하지 않습니다.

이것이 코드 포인트로 비교할 경우의 특징입니다.
숫자 7과 21을 비교하면 숫자 단위로 비교를 하는데, 코드 포인트는 각각 하나하나 비교를 합니다.


  • <, <=, >= 는 비교 기준만 다름