반응형
- 특정 값이 숫자가 맞는지 확인하기-
특정 값이 숫자가 맞는지 체크하기 위해서 자바스크립트에서 제공해주는 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()은 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
반응형
댓글