비교 연산자(comparison operator)

건둔덕 ·2022년 6월 21일
1

Javascript

목록 보기
7/28
post-thumbnail

동등 비교 연산자(loose equality)일치 비교 연산자(strict equality)는 좌항과 우항의 피연산자를 같은 값으로 평가되는지 비교하여 불리언 값으로 반환한다.

하지만 비교하는 엄격성의 정도가 다르다. 동등 비교 연산자는 느슨한 비교를 하지만 일치 비교 연산자는 엄격한 비교를 한다.

<script>
    // 동등비교
    10 == 10; // true

    10 == '10'; // true
    
    // 일치비교
    10 === 10; // true

    10 === '10'; // false
</script>

위의 예시처럼 동등 비교(==) 연산자는 좌항과 우항의 피연산자를 비교할 때 자바스크립트 엔진에 의해 암묵적 타입 변환이 자동으로 이루어져 타입을 일치 시킨 후 같은 값인지 비교한다.

따라서 동등 비교 연산자는 좌항과 우항의 피연산자의 타입이 다르더라도 암묵적 타입 변환 후에 같은 값일 수 있다면 true를 반환할 수 있다.

동등 비교 연산자는 편리한 경우도 있지만 결과를 예측하기 어렵고 실수하기 쉽다.

이와 다르게 일치 비교(===) 연산자는 좌항과 우항의 피연산자가 타입도 같고 값도 같은 경우에만 true를 반환한다.

다시 말해, 암묵적 타입 변환을 하지 않고 값을 비교한다.

일치 비교 연산자에서 주의할 점은 NaN이다.

<script>
    // NaN은 자신과 일치하지 않는 유일한 값이다.
    NaN === NaN; // false
</script>

NaN은 자신과 일치하지 않는 유일한 값이다. 따라서 숫자가 NaN인지 조사하려면 빌트인 함수인 Number.isNaN()을 사용한다.

<script>
    // Number.isNaN() 함수는 지정한 값이 NaN인지 확인하고 그 결과를 불리언 값으로 반환한다.
    Number.isNaN(NaN); // true
    Number.isNaN(10); // false
    Number.isNaN(1 + undefined) // true
</script>

숫자 0도 주의 해야한다. 자바스크립트에는 양의 0과 음의 0이 있는데 이들을 비교하면 true를 반환한다.

<script>
    // 양의 0과 음의 0은 일치 비교, 동등 비교 둘 다 true를 반환한다.
    
    0 === -0; // true
    0 == -0; // true
</script>

위의 주의해야할 예시들은 ES6에서 도입된 Object.is 메서드를 사용하여 비교하면 된다.

<script>
    0 === -0; 		   // true
    Object.is(0, -0); // false
    
    NaN === NaN;       // false
    Object.is(NaN, NaN); // true
</script>

부동등 비교(!=) 연산자와 불일치 비교(!==) 연산자는 각각 동등 비교(==) 연산자와 일치 비교(===) 연산자의 반대 개념이다.

profile
건데브

0개의 댓글