javascript 中的isnan什么意思

JavaScript08

javascript 中的isnan什么意思,第1张

你好,isNaN就是判断是否为一个数字。在检测用户输入和参数检测时很有用。定义和用法isNaN() 函数用于检查其参数是否是非数字值。语法参数描述:x 必需。要检测的值。 返回值 如果 x 是特殊的非数字值 NaN(或者能被转换为这样的值),返回的值就是 true。如果 x 是其他值,则返回 false。说明isNaN() 函数可用于判断其参数是否是 NaN,该值表示一个非法的数字(比如被 0 除后得到的结果)。 如果把 NaN 与任何值(包括其自身)相比得到的结果均是 false,所以要判断某个值是否是 NaN,不能使用 == 或 === 运算符。正因为如此,isNaN() 函数是必需的。提示和注释提示:isNaN() 函数通常用于检测 parseFloat() 和 parseInt() 的结果,以判断它们表示的是否是合法的数字。当然也可以用 isNaN() 函数来检测算数错误,比如用 0 作除数的情况。

什么是NaN:

        NaN 就是在发生类型强制转换的时候会产生 NaN ,也就是把其他类型转换成 Number 类型时,不能转换而返回的结果。

几种转换为 Number 类型的方法及可能出现NaN情况:

        第一种转换函数:parseInt / parseFloat

                console.log(parseInt(" 我是谁 "))   console.log((" 我是谁 "))

以上两种转换函数的结果就会返回 NaN 因为转换的不是一个有效数字啊。

          第二种强制转换类型: Number()

                  console.log(Number("12px"))返回 NaN 因为不是一个有效数字,后面有文字

            第三种变量弱类型转换:

                    var str = '012.345 '      var x = str - 0      console.log(x, typeof x)  // 这就是正常的了

那在JS中不管是什么都会有个类型,那 NaN 是个啥类型呢?

这里可以看到,NaN 的类型是 Number,那既然是 Number 类型,那我用它来比较是不是 数字类型 可不可以勒,那咱们就来看一下。

那这里怎么返回的都是 false 呢? 并且自己连自己都不等于,NaN的英文翻译是:Not a number (不是一个数字的缩写),那居然你不是一个数字 比喻是A,我也不是一个数字 比喻是B,那么 A == B 嘛?你会发现并不相等 返回 false。

那我想判断一个 变量是不是数字类型,不能使用NaN方法,那就有了 isNaN 的出现,请看下方用法:

 isNaN   返回值是 如果你是有效数字,就是返回false,这里为啥是false 请看上面 NaN 英文的翻译 ,如果你返回的不是一个有效数字就是 true。

原理相当于是:

这里你会发现,判断的时候通过Number进行了一波隐式转换,才得到最终结果 false。

说到在项目中真实的用处,目前还没有遇到,但是如果你了解这个方法,遇到相关处理数据需要判断时,你就会想到它啦,以上就是本人对 NaN 及 isNaN 的相关介绍, 还有那句话:如有不对之处及不周之处请大佬们指出,也希望对一些人有所帮助,咱们下次再会!

1、isNaN是Ecmascript提供的内置对象Global的一个函数,如下代码即可以检测

console.log(typeof isNaN)//打印function

2、function自然不是Number类型啦,严格来说,funcion属于对象类型,在其他语言中function是单独的一种数据类型,但是在js中Function类型是Object类型的派生类型。js中数据类型有如下:

字符串、数字、布尔、数组、对象(包括函数)、Null、Undefined

3、那么得出的结论如下

//自定义的函数

var myfc=function() {}

//全局函数,isNaN为ecma内置对象global的函数

var gloabfc=isNaN

//都是函数(函数的类型被ecma划分为对象类型)

console.log('myfc的数据类型为:'+typeof myfc)

console.log('gloabfc的数据类型为:'+typeof gloabfc)

//1、js是一门弱语言类型,其中弱指的是弱数据类型,也就是说变量的类型一开始并不会确定,当为变量赋值时会自动判断后隐式转换它的所有类型类型并进行转换。那么它的变量、表达式等在参与运算时,即使类型不正确,也能通过隐式转换来得到正确地类型。

//2、其他类型转为布尔运算时,如果一个对象(函数也是对象)存在,那么则为true。 如果不存在,会抛出异常,不是你想象中的false,哈哈!

//3、isNaN是存在一个函数,所以为true

function turnBoolean(param) {

if(param){

console.log(param+'的转换结果为:'+true)

}else{

console.log(param+'的转换结果为:'+false)

}

}

turnBoolean(myfc)

turnBoolean(gloabfc)

//其他数据类型转布尔值

turnBoolean(null)

turnBoolean(undefined)

turnBoolean(0)

turnBoolean('')

turnBoolean(1)

turnBoolean({})

其实总结就一句,因为isNaN函数(对象)存在,所以为true