본문 바로가기
JavaScript

[JavaScript/자바스크립트]NaN, 일치비교연산자, Object.is

by hans-j 2022. 12. 23.

NaN은 Not a Number으로 숫자가 아닌 값을 의미한다.

NaN은 자신과 일치하지 않는 유일한 값이다.

 

따라서 숫자가 NaN인지 조사하려면 빌트인 함수 Number.isNaN사용한다.

(왜 숫자라고 했냐면 NaN의 타입은 숫자이기 때문에  // typeof NaN ->출력값은 number

NaN의 타입

출력값으로 숫자가 나왔을때, 이것이 NaN인지 확인하려면 Number.isNaN을 사용해야한다는 의미.

일치 비교 연산자로 비교하면 false의 값이 나온다. 자신과 일치하지 않는 유일한 값이기 때문에)

Number.isNaN(NaN); //true
Number.isNaN(10); //false
Number.isNaN(1 + undefined); //true

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

**동등 비교 연산자 (==)값만 비교하고 (타입이 다르다면, 암묵적 타임변환을 통해 타입을 일치시킴), 
일치 비교 연산자 (===)자는 암묵적 타입 변환을 하지 않고 값을 비교하기 때문이다. **


이때 주의해야할 점이 있다.

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

따라서 Object.is 메서드를 사용해야한다.

ES6에서 도입된 이 메서드는 일치 비교연산자와 동일하게 동작하지만

숫자0과 NaN에 대한 출력값이 일치 비교 연산자와 다르다.

 

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Object/is

 

Object.is() - JavaScript | MDN

Object.is() 메서드는 두 값이 같은 값인지 결정합니다.

developer.mozilla.org


**모던 자바스크립트 deep dive (이응모 선생님) 를 읽고 참고하여 작성하는 글입니다 **