JS中isNaN()⽅法解析
1. isNaN() 存在的意义
由于 NaN 是唯⼀⼀个不等于⾃⾝的值,不像其他的值,可以⽤相等操作符来判断是否等于⾃⾝,NaN == NaN和NaN === NaN都会返回false,所以isNaN()就诞⽣了,那它到底起着怎样的作⽤呢,且看下⽂。
2. isNaN() 判断的原理
isNaN函数接受⼀个参数,原理是先尝试将参数转换为数值型,调⽤的是Number()⽅法,再进⾏判断。
说到这⾥就有必要介绍⼀下Number()⽅法了,其实Number()⽅法的原理也有点复杂,具体分两种情况。
Number()⽅法也接受⼀个参数:
⼀、参数为原始数据类型
原始数据类型有:数值、字符串、布尔值、undefined、null
先对参数调⽤valueOf⽅法,再⽤Number()⽅法进⾏判断
//1. 数值:⾃然转为数值
//2. 字符串
Number('123') // 123
Number('123abc') // NaN
Number(' ') // 0
// 3. 布尔值
Number(true) // 1
Number(false) // 0
// 4. undefined
Number(undefined) // NaN
//5. null
Number(null) // 0
⼆、参数为对象
先对参数调⽤valueOf⽅法,再对参数调⽤toString()⽅法,最后⽤Number()⽅法进⾏判断。
参数为对象时返回的是NaN,除⾮参数是包含单个数值的数组(数组也是对象)
Number({a:1}) // NaN
Number([1, 2, 3]) //  NaN
Number([1]) // 1字符串转数组方法js
介绍完Number()⽅法的原理之后,就可以很好地知道isNaN()判断的结果了。
3. 什么时候返回 true ,什么时候返回 false
返回 true: NaN、对象(除包含单个数值的数组)、undefined、不能⽤Number()⽅法转为数值型的字符串
返回false: 数值、null、布尔值、能⽤Number()⽅法转为数值型的字符串、包含单个数值的数组
4. isNaN() 的作⽤
根据isNaN()⽅法返回的是true还是false可以检测参数是否可以像number那样是可运算的,如果是不可运算的,则可赋予这个参数⼀个默认的值或者是其他合适的内容,就可以得到⼀个隐式转换参数数值的函数。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。