본문 바로가기
Language/JavaScript

[JavaScript] 특정 값이 숫자인지 체크하기 (ft. isNaN() / Number.isNaN())

by 썸머워즈 2020. 12. 7.
반응형

- 특정 값이 숫자가 맞는지 확인하기-


특정 값이 숫자가 맞는지 체크하기 위해서 자바스크립트에서 제공해주는 isNaN() 메서드가 존재한다.

 

예제를 통해 쉽게 접근해보자.

 

▷예제1)

isNaN("123") //false

isNaN("abc") //true

메서드 안에 숫자를 넣었는데 false가 나오고 문자를 넣었는데 true가 나온게 이상해 보일수는 있으나

NaN이 의미하는 것은 Not a Number 이기 때문에 

메서드의 매개변수가 숫자일 경우 false, 숫자가 아닐경우 true를 반환한다.

 

이렇게보면 숫자인지만 체크하는게 아니라 문자도 체크하는것으로도 볼 수 있는데

 

isNaN() 메서드는 좀 일반적이지 않은 규칙을 가지고 있으므로 조심해서 사용하는게 좋다.

그래서 나온게 제목에 있는것처럼 Number.isNaN() 이라는 메서드이다. 

 

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

 

Number.isNaN() - JavaScript | MDN

Number.isNaN() 메서드는 주어진 값이 NaN인지 판별합니다.

developer.mozilla.org

 

Number.isNaN()은 isNaN()보다 좀 강화된 버전이라고 보면 될것같다.

 

다음 예제를 통해 왜 isNaN() 메서드가 일반적인 규칙을 가지지 않았는지 확인해보자.

 

▷예제2) isNaN()의 규칙

isNaN(NaN);       // true
isNaN(undefined); // true
isNaN({});        // true

isNaN(true);      // false
isNaN(null);      // false
isNaN(37);        // false

// 문자열
isNaN("37");      // false: "37"은 NaN이 아닌 숫자 37로 변환됩니다
isNaN("37.37");   // false: "37.37"은 NaN이 아닌 숫자 37.37로 변환됩니다
isNaN("123ABC");  // true: parseInt("123ABC")는 123이지만 Number("123ABC")는 NaN입니다
isNaN("");        // false: 빈 문자열은 NaN이 아닌 0으로 변환됩니다
isNaN(" ");       // false: 공백이 있는 문자열은 NaN이 아닌 0으로 변환됩니다

// dates
isNaN(new Date());                // false
isNaN(new Date().toString());     // true

// 이것이 허위 양성이고 isNaN이 완전히 신뢰할 수 없는 이유이다.
isNaN("blabla")   // true: "blabla"는 숫자로 변환됩니다.
                  // 이것을 숫자롯 parsing 하는 것을 실패하고 NaN을 반환한다.

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

반응형


댓글

TOP