👋 Number 함수: isNaN(), isInteger(), isSafeInteger(), isFinite()
1. isNaN()
-
NaN값의 여부를 체크NaN값이면true, 아니면false반환
console.log(Number.isNaN('ABC'), isNaN('DEF')); // false, true console.log(Number.isNaN(NaN), isNaN(NaN)); // true, true, console.log(Number.isNaN(0 / 0), isNaN(0 / 0)); // true, true, console.log(Number.isNaN('100'), isNaN('200')); // false, false,- 글로벌 오브젝트의
isNaN("DEF")값 타입이Number가 아닌 것을 체크 함,DEF가String타입이므로true반환 NaN와0 / 0은 값이NaN이므로true가 됨Number.isNaN("ABC")값이NaN가 아니므로false가 됨- 글로벌 오브젝트의
isNaN("200")값을 숫자로 변환하고 그 결과로 비교 함, 변환한 값200이Number이므로false반환
-
NaN 체크 방법
NaN === NaN결과가false이므로 사용 불가isNaN(), 글로벌 오브젝트Number.isNaN()Object.is(NaN, NaN):true
2. isInteger()
- 파라미터 값이
정수이면true, 아니면false반환 -
정수로 인식
console.log(Number.isInteger(0)); // true console.log(Number.isInteger(1.0)); // true console.log(Number.isInteger(1.01)); // false -
정수가 아닌 것으로 인식
console.log(Number.isInteger('12')); // false console.log(Number.isInteger(true)); // false- 값을
Number로 변환하여 체크하지 않음 Number로 변환하면,"12"와true가Number이므로 정수로 인식됨
- 값을
3. isSafeInteger()
- 파라미터 값이
sfae 정수이면true아니면false반환 -(2의 53승 - 1)~+(2의 53승 -1):true아니면false
const isSafe = Number.isSafeInteger;
console.log(isSafe(7.0)); // true
console.log(isSafe(Number.MAX_SAFE_INTEGER)); // true
console.log(isSafe(Number.MIN_SAFE_INTEGER)); // true
// 7.0은 정수이며, 값 범위에 속하므로 trueconst isSafe = Number.isSafeInteger;
console.log(isSafe(7.1)); // false
console.log(isSafe('100')); // false
console.log(isSafe(NaN)); // false
console.log(isSafe(Infinity)); // false
// 7.1은 정수가 아님
// 값을 Number로 반환하여 체크하지 않음
// Number로 변환하면, "100"이 Number이므로 정수로 인식4. isFinite()
- 파라미터 값이 유한 값이면
true아니면false -
글로벌 오브젝트의
isFinite()와 체크 결과가 다름const num = Number.isFinite, global = isFinite; console.log(num(100), global(200)); // true, true console.log(num('70'), global('80')); // false, true console.log(num(true), global(true)); // false, true console.log(num(NaN), global(NaN)); // false, false console.log(num(undefined), global(undefined)); // false, false - 함수는 오브젝트에 속해야 하므로
Number와 관련된 것은Number오브젝트의 함수 사용, 글로벌 오브젝트의 함수는 글로벌 사용이 목적