isNaN() vs Number.isNaN()
들 어가기 전
NaN stands for Not a Number
TLTR
isNaN()
넘어오는 argument를 Number로 변환을 시도
Number.isNaN()
주어진 값의 유형이 Number이고, 값이 NaN이면 true 아니면 false
isNaN()
isNaN(1) //false
isNaN(1.23) //false
isNaN('a') //true
isNaN(null) //false
isNaN(undefined) //true
왜 isNaN(null) 는 false로 리턴하나요?
- typeof null은 object
- 넘어오는 argument를 Number로 변환을 시도
Number(null) // 0
isNaN(0) // false
isNaN 예외 케이스
Number(null) // 0
Number('') // 0
Number(' ') // 0
Number(false) // 0
Number({ fun: () => '' }) // 0
isNaN('22') // false 숫자로 변환되기에...
isNaN('22.39') // false
Number.isNaN()
- Number형에서만 가능. 즉, 주어진 값의 유형이 Number이고, 값이 NaN이면 true 아니면 false
- 강제로 Number변환 시도 하지 않음
- ES2015(ES6)에 추가됨
Number.isNaN(NaN) // true
Number.isNaN(null) // false
Number.isNaN(12) // false
Number.isNaN('12') // false
Number.isNaN('12.12') // false
Number.isNaN('') // false