美文网首页
数据类型-数字 Number-NaN

数据类型-数字 Number-NaN

作者: 素弥 | 来源:发表于2016-09-16 12:18 被阅读1589次

定义

NaN是JavaScript的特殊值,表示“非数字”(Not a Number)
<br />

规则

NaN不是数字,但是它的数据类型是数字

typeof NaN;    //number

NaN是JavaScript之中唯一不等于自身的值,不等于任何值,包括它本身

NaN == NaN;     //false
NaN === NaN;    //false

NaN在布尔运算时被当作false

Boolean(NaN);    //false

NaN与任何数(包括它自己)的运算,得到的都是NaN

NaN + 32    //NaN
NaN - 32    //NaN
NaN * 32    //NaN
NaN / 32    //NaN

由于数组的indexOf方法,内部使用的是严格相等运算符,所以该方法对NaN不成立

[NaN].indexOf(NaN)    //-1  检索的字符串值没有出现,则该方法返回-1

<br />

何时出现

当运算失败或者运算无法返回正确的数值时,就会返回NaN

5 - 'x'    //NaN
0 / 0    //NaN

一些数学函数的运算结果会出现NaN

Math.acos(2)    //NaN
Math.log(-1)    //NaN
Math.sqrt(-1)    //NaN

<br />

判断NaN的方法

isNaN()

原理

isNaN()会将括号内的参数利用Number()进行一次转换

如果转换得到的结果NaN → 返回true
如果结果不为NaN → 返回false

示例

由于会对参数用Number()进行一次数据转换,故对于字符串、部分对象、部分数组、undefined等,isNaN()会返回true

isNaN('NaN');      //true    等同于isNaN(Number('NaN'));
isNaN({});         //true    等同于isNaN(Number({}));
isNaN(['xzy']);    //true    等同于isNaN(Number(['xzy']));
isNaN(undefined);  //true    等同于isNaN(Number(undefined));    Number(undefined)的结果为NaN

但是,对于空数组、只有一个数值成员的数组、null等,isNaN()返回false

isNaN([]);        //false
isNaN([123]);     //false
isNaN(['123']);   //false
isNaN(null);      //false    Number(null)的结果为0
如何使用

使用isNaN之前,最好判断一下数据类型

function myIsNaN(value){
    return typeof value === 'number' && isNaN(value);
}

<br />

Number.isNaN()

与全局函数isNaN()相比,该方法不会强制将参数转换成数字,只有在参数是真正的数字类型,且值为 NaN
的时候才会返回 true

Number.isNaN('NaN');      //false
Number.isNaN({});         //false
Number.isNaN(undefined);  //false
Number.isNaN(null);       //false

<br />

利用自身不等特性

利用NaN是JavaScript之中唯一不等于自身的值这个特点,进行判断

function myIsNaN(value){
    return value !== value;
}

相关文章

  • 数据类型-数字 Number-NaN

    定义 NaN是JavaScript的特殊值,表示“非数字”(Not a Number) 规则 NaN不是数字,但是...

  • js - 03 JS中很常用的数据类型

    基本数据类型 基本的数据类型数字 number常规数字和NaN(not a number:不是一个数字,但属于数字...

  • 02.基本数据类型--数字、字符串

    基本数据类型--数字、字符串 一、数据类型分类 1).基本的数据类型 数字:int、float 字符串:str 布...

  • 8.python3数字

    数字简介 Python3 数字数据类型用于存储数值。数据类型是不允许改变的,这就意味着如果改变数字数据类型的值,将...

  • JS基础知识

    数据类型 检测数据类型 --- typeof 数据 数据类型:number(数字/NaN) 、 string(字符...

  • 列表,元组,字典

    Python 数据类型 Python中数据类型分为数字型和非数字型数字型:整型(int)浮点型(float)布尔型...

  • Lesson 013 —— python 数字

    Lesson 013 —— python 数字 Python 数字数据类型用于存储数值。 数据类型是不允许改变的,...

  • 快速入门

    数据类型和变量 数据类型 Number 123(正常数字)、NaN(不是数字)、Infinity(无限大)16进制...

  • 5-10js

    六种数据类型相加生成的数据类型: 数字 + 对象类型 = 字符串 数字 + 字符串类型 = 字符串类型 数字 + ...

  • 学习纲要:JavaScript 数据类型

    学习目标 知道什么是数据类型,为什么要有数据类型。 知道有哪些数据类型。 知道数字的常见操作。如:如何对数字做算数...

网友评论

      本文标题:数据类型-数字 Number-NaN

      本文链接:https://www.haomeiwen.com/subject/iufiettx.html