NaN은 Not a Number으로 숫자가 아닌 값을 의미한다.
NaN은 자신과 일치하지 않는 유일한 값이다.
따라서 숫자가 NaN인지 조사하려면 빌트인 함수 Number.isNaN을 사용한다.
(왜 숫자라고 했냐면 NaN의 타입은 숫자이기 때문에 // typeof NaN ->출력값은 number
출력값으로 숫자가 나왔을때, 이것이 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
**모던 자바스크립트 deep dive (이응모 선생님) 를 읽고 참고하여 작성하는 글입니다 **
'JavaScript' 카테고리의 다른 글
[JavaScript/자바스크립트]반복문 (0) | 2022.12.25 |
---|---|
[JavaScript/자바스크립트]조건문 if...else, switch (0) | 2022.12.24 |
[JavaScript/자바스크립트]삼항 조건 연산자 (0) | 2022.12.23 |
[JavaScript/자바스크립트] 리터럴과 타입 (0) | 2022.12.23 |
[JavaScript/자바스크립트] 값과 변수 (0) | 2022.12.23 |