[JavaScript] Number.isNaN()을 써야하는 이유
1. Number.isNaN()이란?
Number.isNaN() 은 Number Methods중 하나로 인자가 NaN(Not a Number) 인지 아닌지를 판별한다.
즉, 인자가 NaN이면 true, NaN이 아니면 false를 반환한다.
console.log(Number.isNaN(NaN)); //returns true
console.log(Number.isNaN(123)); //returns false
2. Number.isNaN()을 써야하는 이유는?
여기서 주목해야할 점은 Number.isNaN()과 isNaN()사이에 차이점을 두어야 한다는 것이다.
Number.isNaN()은 오직 숫자 타입의 값에서만 동작하며, 그 중 값이 NaN일 경우만 true로 반환한다.
즉 인자값이 NaN이여도 숫자 타입이 아닐 경우, false를 반환한다.
BUT, isNaN()은 전역함수로서 숫자가 아닌 타입의 인자를 강제로 숫자타입으로 변환한다. 따라서 isNaN()은 정확성이 낮은 값을 반환할 수도 있다.
아래의 예시를 통해 자세히 알아보자.
console.log(Number.isNaN(123)); //returns false
console.log(isNaN(123)); //returns false
console.log(Number.isNaN('123')); //returns false 이유: '123'은 string type
console.log(isNaN('123')); //returns false 이유: '123'은 숫자값 123으로 변환됨
console.log(Number.isNaN('abc')); //returns false
console.log(isNaN('abc')); //returns true
console.log(Number.isNaN(null)); //returns false 이유: null은 object type
console.log(isNaN(null)); //returns false 이유: null은 숫자값 0으로 변환됨
console.log(Number.isNaN(undefined)); //returns false 이유: undefined는 undefined type
console.log(isNaN(undefined)); //returns true 이유: undefined는 숫자값 NaN으로 변환됨
결과: 경우에따라 부정확한 값을 도출하는 isNaN()보다 타입까지 신경쓰는 Number.isNaN()을 사용하는 것이 더 효율적이다.
Leave a comment