아무튼 개발
article thumbnail
반응형

NaN

NaN은 Not a Number의 약자로, 숫자가 아니라는 의미이다.

숫자로 변환할 수 없는 값을 변환하려고 할 때나 결과가 숫자가 아니면 NaN을 반환한다.

 

NaN 사용하기

let str = "123";
typeof(str) // string

let num = Number(str) // 123
typeof(num) // number

Number("abc") // NaN

 

먼저 NaN을 사용하는 방법을 알아보겠다.

문자열로 감싸진 123의 경우, 숫자로 변환 가능하다.

하지만 abc는 숫자로 변환할 수 없는 값이기에 NaN이라는 결과가 반환된다.

 

NaN === NaN

NaN === NaN // false
Number("abc") === NaN // false

NaN !== NaN // true

 

NaN과 NaN을 비교하면 true가 나올 것 같지만, false가 나온다!

자기 자신과도 동등하지 않은 결과가 반환된다.

이는 자바스크립트 자체의 설계 오류라고 한다.

 

값이 NaN인지 판별하기 위해서는 isNaN이라는 자바스크립트 메서드를 사용할 수 있다.

 

IsNaN()

값이 NaN인지를 판별하여 true/false 값을 반환한다. 값이 숫자가 맞다면 false를 반환하는 것이다.

 

isNaN("abc") // true
isNaN("123") // false
isNaN(NaN) // true

 

Number.isNaN()

Number.IsNaN() 메서드는 ES2015에서 추가되었다. Number.isNaN()은 기존의 isNaN() 메서드보다 더 엄격하게 사용된다. 값의 타입 자체가 number가 아니면 false를 반환한다. 

 

차이점을 알아보자.

isNaN("") // true
Number.isNaN("") // false

isNaN("123") // true
Number.isNaN("123") // false

- ""

Number("")은 NaN이 아닌, 0을 반환한다. 따라서 isNaN으로는 true지만, Number.isNaN에서는 false로 반환된다.

 

- "123"

123 역시 string 타입이기에 Number.isNaN에서는 타입 검증에 따라 false로 판별된다.

 


 

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

 

isNaN() - JavaScript | MDN

isNaN() 함수는 어떤 값이 NaN인지 판별합니다. isNaN 함수는 몇몇 혼란스러운 케이스을 가지고 있으므로, ECMAScript 2015에서 추가한 Number.isNaN()으로 바꾸는 편이 좋을 수도 있습니다.

developer.mozilla.org

 

반응형
profile

아무튼 개발

@릴쥬

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

profile on loading

Loading...