JS中的isNaN()方法详解

JS中的isNaN()方法

isNaN存在的意义

由于NaN是唯一一个不等于自身的值,所以它不像其他值,可以用相等操作符来判断是否等于自身。比如undefined == undefined和undefined === undefined都会返回true,而NaN == NaN和NaN === NaN都会返回false,所以isNaN()就诞生了,那么它可以用来干什么呢?下面就来介绍一下它的作用:

判断

原理

isNaN函数接受一个参数,原理是先尝试将参数转换为数值型,调用的是Number()方法,再进行判断

Number()

说到这里就有必要介绍一下Number()方法了,其实Number()方法的原理也有点复杂,具体分两种情况。
Number()方法也接收一个参数:

一、接收的参数为原始类型

首先原始数据类型有:number、string、boolean、undefined、null。
先对参数调用valueOf()()方法,再用Number()方法进行判断。(注:valueOf():返回指定对象的原始值,Number():将对象中的值转换为数字)
例:

    //1. 字符串
    Number('123') // 123
    Number('123abc') // NaN
    Number(' ') // 0
    // 2. 布尔值
    Number(true) // 1
    Number(false) // 0
    // 3. undefined
    Number(undefined) // NaN
    // 4. null
    Number(null) // 0

二、接收的参数为对象

先对参数调用valueOf方法,再对参数调用toString()方法,最后用Number()方法进行判断。(注:toString():把对象转换为字符串,并返回结果
参数为对象时返回的是NaN,除非参数是包含单个数值的数组(数组也是对象)
例:

	Number({a}) // NaN
    Number([1, 2, 3]) // NaN
    Number([1]) // 1

介绍完Number()方法的原理之后,就可以很好地知道isNaN()判断的结果了。

那么isNaN()方法在什么条件下会返回true,又会在什么条件下返回false呢?

返回 true: NaN、对象(除包含单个数值的数组)、undefined、不能用Number()方法转为number类型的字符串
返回false: 数值、null、布尔值、能用Number()方法转为number类型的字符串、包含单个数值的数组

作用

根据isNaN()方法返回的是true还是false可以检测参数是否可以像number类型那样是可运算的,如果是不可运算的,则可赋予这个参数一个默认的值或者是其他合适的内容,就可以得到一个隐式转换参数数值的函数

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值