[javascript] 비교 연산자(동등 비교)

공수정·2022년 5월 11일
0

javascript

목록 보기
2/4

비교 연산자

비교 연산자는 좌항과 우항의 피 연산자를 비교한 다음 그 결과를 불리언 값으로 반환함
주로 if문과 for문과 같은 제어문에서 많이 사용함

비교 연산자 종류

연산자의미예시설명
==동등 비교x == yx와 y의 이 같음
===일치 비교x === yx와 y의 타입이 같음
!=부동등 비교x == yx와 y의 이 다름
!==부일치 비교x == yx와 y의 타입 다름

==연산자의 문제점

== 연산자는 좌항과 우항의 피연산자를 비교할 때 먼저 암묵적 타입 변환을 통해 타입을 일치시킨 후 값이 같은지 비교함.
따라서 문자열인 '1'과 숫자형인 1이 같다고 표시된다.

5 == 5;   // true
5 == '5';  // true -> 타입을 먼저 암묵적으로 일치 시킨 후에 비교하기 떄문에 같음

따라서 동등 비교 연산자(==)보다는 일치 비교 연산자(===)를 사용하는 것이 좋다.
일치 비교 연산자(===)는 값과 타입을 동시에 비교하기 떄문에 위와 같은 상황에서는 false를 반환한다.

5 === 5;   //true
5 === '5'; //false

NaN 비교의 문제

NaN은 자기 자신과 일치하지 않는 유일한 값이기 떄문에 이를 비교하기 위해서는 Number.isNaN()을 사용해서 비교해야한다.

NaN === NaN; //false

Number.isNan(NaN); //true
Number.isNan(1 + undefined); //true

Number.isNan('1'); //false
Number.isNan(1); //false

Number.isNaN()는 지정한 값이 NaN인지 확인하고 그 결과를 불리언 값으로 리턴함


Obejct.is()

0 == -0;// true
0 === -0;// true
NaN == NaN; //false
NaN === NaN; //false

앞서 말했던 동등 비교 연산자(==)일치 비교 연산자(===)도 0과 -0의 비교가 같다고 하거나, NaN과 NaN의 비교는 다르다고 평가하는데, Obejct.is()는 이를 해결해줄 메서드로 ES6에서 새로 도입도니 메서드이다. 이 메서드는 이러한 문제를 한번에 해결한다.

Obejct.is(-0, +0)		//false
Obejct.is(NaN, NaN)		//true

이 메서드는 NaN과 NaN의 비교나, -0과 0의 비교를 가장 정확한 결과값으로 반환하고, 그 외에는 일치 비교 연산자(===)와 똑같이 동작하기 때문에, 이 메서드를 이용해서 비교하는 것이 가장 간편하고 정확할 것 같다.


출처
도서 : 모던 자바스크립트 deep dive(지은이 이웅모)

profile
계속해서 공부하는 개발자입니다 :)

0개의 댓글