版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/bianliuzhu/article/details/82586867

NaN 属性代表一个“不是数字”的值。这个特殊的值是因为运算不能执行而导致的,不能执行的原因要么是因为其中的运算对象之一非数字(例如, "abc" / 4),要么是因为运算的结果非数字(例如,除数为零)。

虽然这看上去很简单,但 NaN 有一些令人惊讶的特点,如果你不知道它们的话,可能会导致令人头痛的bug。

首先,虽然 NaN 意味着“不是数字”,但是它的类型,不管你信不信,是 Number

console.log(typeof NaN === "number");  // logs "true"

此外, NaN 和任何东西比较——甚至是它自己本身!——结果是false:

console.log(NaN === NaN);  // logs "false"

一种半可靠的方法来测试一个数字是否等于 NaN,是使用内置函数 isNaN(),但即使使用 isNaN() 依然并非是一个完美的解决方案。

一个更好的解决办法是使用 value !== value,如果值等于NaN,只会产生true。另外,ES6提供了一个新的 Number.isNaN() 函数,这是一个不同的函数,并且比老的全局 isNaN() 函数更可靠。

NaN 是什么?它的类型是什么?如何可靠地测试一个值是否等于 NaN ?相关推荐

  1. 经典面试题(6):NaN 是什么?如何测试一个值是否等于 NaN ?

    NaN 属性代表一个"不是数字"的值.这个特殊的值是因为运算不能执行而导致的,不能执行的原因要么是因为其中的运算对象之一非数字.例如: "abc" / 4,要么 ...

  2. python判断一个值是否为Nan,NULL

    python判断一个值是否为Nan,NULL 在实际的实验中,我们经常会遇到输出为Nan或者NULL的情况,那么我们该如何去判断它,然后用if语句将其规避勒 方案一如下: import numpy a ...

  3. js中判断一个变量是否为NaN

    定义 NaN(不是一个数字,但数据类型为number)是执行数学运算没有成功,返回失败的结果. 另外,NaN 不等于 NaN . 判断方法 利用 NaN 是唯一一个不等于自身的特点 function ...

  4. java 判断 nan_关于java:如何测试double是否等于NaN?

    我在Java中有一个double,我想检查它是否为NaN. 做这个的最好方式是什么? 使用静态Double.isNaN(double)方法,或Double的.isNaN()方法. // 1. stat ...

  5. R语言e1071包中的支持向量机:构建nu-classification类型的支持向量机SVM并分析不同nu值惩罚下模型分类螺旋线型(sprials)线性不可分数据集的表现

    R语言e1071包中的支持向量机:构建nu-classification类型的支持向量机SVM并分析不同nu值惩罚下模型分类螺旋线型(sprials)线性不可分数据集的表现 目录

  6. python pandas DataFrame 替换 NaN 值 和 删除 NaN 所在的行。

    python pandas DataFrame 替换 NaN 值 和 删除 NaN 所在的行. import pandas as pd import numpy as np df1 = pd.Data ...

  7. Long类型传到前端失去精度(2):Long类型不是实体类的某一个字段,Long类型是一个函数的返回值

    Long类型传到前端失去精度(2):Long类型不是实体类的某一个字段,Long类型是一个函数的返回值 又是转换Mybatis-Plus的一天,又遇到了之前熟悉的问题:Long类型传到前端失去精度.可 ...

  8. pandas将所0值修改为NaN

    代码: dataframe.replace(0,np.nan) 同理,想修改任何值为另一个值都可以使用:dataframe.replace(原始值,修改后的值)

  9. 滤了asa,cer,cdx,php,aspx等脚本类型的上传情况下添加一个ashx的上传类型

    今天日一站 发现后台可以设置上传类型,但是asp,asa,cer等等都不行,上传之后就提示下载 尝试着关闭了下了,还是不行,后来找到了一位前辈写的文章 过滤了asa,cer,cdx,php,aspx等 ...

最新文章

  1. VS2012/13本地发布网站详细步骤(可带数据库)
  2. Win8兼容ARM十大意义:打破垄断拉低价格
  3. BCH期货合约将在美国挂牌交易所上线
  4. Andriod: 在xml布局中使用自定义属性
  5. 7个顶级资源网站,不知道就很可惜
  6. mysql 取第一条_MySQL索引底层(一)索引底层原理
  7. Vue.js 组件编码规范
  8. 3 款实用的在线JS代码工具推荐
  9. 夺命雷公狗---无限级分类NO2
  10. Fultter 实战No toolchains found in the NDK toolchains folder for ABI arm-linux-androideabi
  11. 中国石油大学《安全管理学》第二阶段在线作业
  12. 830计算机软件综合大纲,2019年中国地质大学830计算机软件综合考试大纲.pdf
  13. 8位处理器、16位处理器、32位处理器和64位处理器
  14. redis主从,哨兵模式配置
  15. Android实现VR图片、视频小程序
  16. python绘制直线的垂线_p countour中的Python垂直线
  17. [转]和《红楼梦》咏菊花诗十二首
  18. Django框架之视图函数views
  19. 2012年10月【美国】自驾游
  20. 全球海温数据NOAA Extended Reconstructed Sea Surface Temperature (SST) V5的时间解释

热门文章

  1. i3 10105f怎么样 i310105f相当于i5什么档次 i310105f属于什么档次
  2. 支付宝截图反馈功能实现
  3. 《王者荣耀》S17赛季返场皮肤:小厨娘稳了,武陵仙君紧随其后
  4. Excel函数一些使用方法分享
  5. simatic net opc scout OPC.SimaticNet下没有DP服务
  6. 麒麟980鸿蒙,鸿蒙第三期公测手机预测:麒麟980/820机型,包括P30和Mate20系列
  7. java对时间的换算
  8. linux下微信不能同步,Linux下微信安装
  9. 阿里巴巴看好区块链未来发展趋势 龙纪链开启区块链游戏新纪元
  10. 计科练习12题解(并查集,最小生成树)