[ isNaN() ]
매개변수가 숫자인지 검사하는 함수. NaN은 Not a Number을 뜻함
주어진 값이 숫자이면 true, 아니면 false 반환
isNaN() 메서드는 매개변수를 강제로 Number()로 바꾸는 문제점이 있음
기본적으로 NaN은 원시타입인 숫자타입의 값으로 number type으로 분류되어있음
또한 NaN은 자신과 일치하지 않는 유일한 값임
isNaN(NaN); // 참
isNaN(undefined); // 참
isNaN({}); // 참
isNaN(true); // 거짓
isNaN(null); // 거짓
isNaN(37); // 거짓
// 자신비교
NaN === NaN; // false
var nan = NaN;
nan === nan; // false
NaN == NaN; // false
nan == nan; // false
// 문자열
isNaN("37"); // 거짓: "37"은 NaN이 아닌 숫자 37로 변환됨
isNaN("37.37"); // 거짓: "37.37"은 NaN이 아닌 숫자 37.37로 변환됨
isNaN("123ABC"); // 참: parseInt("123ABC")는 123이지만 Number("123ABC")는 NaN
isNaN(""); // 거짓: 빈 문자열은 NaN이 아닌 0으로 변환됨
isNaN(" "); // 거짓: 공백이 있는 문자열은 NaN이 아닌 0으로 변환됨
// dates
isNaN(new Date()); // 거짓
isNaN(new Date().toString()); // 참
[ Number.isNaN() ]
isNaN()의 경우 특이 케이스가 몇몇이 존재하기 때문에 ES6기반으로 코드를 작성한다면
특이 케이스가 교정되어 좀 더 strict한 Number.isNaN()을 사용할 것을 MDN은 권장하고 있음
Number.isNaN()은 isNaN()에 비해 더 엄격함
isNaN() 함수와 달리 Number.isNaN()은 강제로 매개변수를 숫자로 변환하는 문제를 겪지 않음
😉🤔
해당 값이 숫자인지 검사할때는 isNaN()을 사용하면 됨
NaN은 근본적으로 Number Type이지만 자기자신과 일치하지 않기 때문에 비교할때는 조심해야함
매개변수를 강제로 Number()로 바꾸는 문제점이 있기 때문에 Number.isNaN()메서드를 사용할 것을 권장
'JS' 카테고리의 다른 글
Variables (Primitive type, Reference Type, Casting) (0) | 2024.06.05 |
---|---|
JS, StructuredClone() (1) | 2024.04.26 |
JS, 이벤트 바인딩(Event Binding) (0) | 2023.12.26 |
JS, 버블링, 캡쳐링 (2) | 2023.12.06 |
JS, 클로저 (0) | 2023.12.04 |
댓글