JS中 isNaN() 方法解析
Posted moqijianqi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
介绍完Number()
方法的原理之后,就可以很好地知道isNaN()
判断的结果了。
3. 什么时候返回 true ,什么时候返回 false
返回 true: NaN
、对象(除包含单个数值的数组)、undefined、不能用Number()
方法转为数值型的字符串
返回false: 数值、null
、布尔值、能用Number()
方法转为数值型的字符串、包含单个数值的数组
4. isNaN() 的作用
根据isNaN()
方法返回的是true
还是false
可以检测参数是否可以像number
那样是可运算的,如果是不可运算的,则可赋予这个参数一个默认的值或者是其他合适的内容,就可以得到一个隐式转换参数数值的函数。
以上是关于JS中 isNaN() 方法解析的主要内容,如果未能解决你的问题,请参考以下文章