背景 与 JavaScript 中其他的值不同,NaN不能通过相等操作符(== 和 ===)来判断 ,因为 NaN == NaN 和 NaN === NaN 都会返回 false。 因此,isNaN 就很有必要了。

isNaN

  1. 用途: 为了判断一个计算结果或者变量的值是否为NaN
  2. 过程: 首先进行类型检测,如果参数不是Number类型,isNaN会先将参数转换为数值类型,然后在进行是否为NaN的判断

类型转Number

Number('');  // 0  包含空格的字符串也会被转换成0
Number(null); // 0
Number(0); // 0
Number(1); // 1
Number(true); // 1
Number(false); // 0
Number(undefined); // NaN
Number('str'); // NaN
Number(NaN); // NaN
Number(0 / 0); // 0/0为NaN
Number(1 / 0); // 任何数字/0为Infinity

isNaN

isNaN(''); // false
isNaN(null); // false
isNaN(0); // false
isNaN(1); // false
isNaN(true); // false
isNaN(false); // false
isNaN(undefined); // true
isNaN('str'); // true
isNaN(NaN); // true
isNaN(0 / 0); // true
isNaN(1 / 0); // false

Number.isNaN()

  1. 用途: 为了判断一个计算结果或者变量的值是否为NaN
  2. 过程: 首先进行类型检测,如果传入的参数不是数值类型,直接返回false,不会自行将参数转换成数字,只有参数为数值类型才进行isNaN的判断,在参数是值为 NaN 的数字时,才会返回 true。
Number.isNaN(''); // false
Number.isNaN(null); // false
Number.isNaN(0); // false
Number.isNaN(1); // false
Number.isNaN(true); // false
Number.isNaN(false); // false
Number.isNaN(undefined); // false
Number.isNaN('str'); // false
Number.isNaN(NaN); // true
Number.isNaN(0 / 0); // true
Number.isNaN(1 / 0); // false

总结
isNaN:将参数转换成数字;
Number.isNaN: 不会自行将参数转换成数字;

参考文档:

  • isNaN()
  • Number.isNaN()

js中isNaN和Number.isNaN的区别相关推荐

  1. 检测数据类型、小数点后保留后N位方法、数据类型转换、window对象的方法 、分支结构 (if单分支、if-else 双分支、多重if结构)isNaN() 与 Number.isN的区别

    目录 1.检测数据类型(typeof) 2.数据类型转换 转换为字符串类型 换为数字类型 其他类型转换为布尔值 小数点后保留后N位方法 3.window对象的方法 (window.可省略) 4.顺序流 ...

  2. 【JavaScript】isNaN 和 Number.isNaN 函数的区别?

    isNaN 和 Number.isNaN 函数的区别? 文章目录 isNaN 和 Number.isNaN 函数的区别? isNaN Number.isNaN 二者对比 isNaN 该函数接收一个参数 ...

  3. Js isNaN()和Number.isNaN()、isFinite() 和 Number.isFinite()

    isNaN()和Number.isNaN() 当我们向isNaN传递一个参数时,它的内部实现是:通过Number()方法,尝试将参数转换成Number类型,如果成功返回false,如果失败返回true ...

  4. isNaN、Number.isNaN、isFinite、Number.isFinite

    isNaN和Number.isNaN 这两者都是为了判断参数是否为NaN类型. isNaN的实现原理是:通过Number()方法,尝试将参数转换成Number类型,如果成功返回false,如果失败返回 ...

  5. html offsetwidth 字符串宽度,基于js中style.width与offsetWidth的区别(详解)

    作为一个初学者,经常会遇到在获取某一元素的宽度(高度.top值...)时,到底是用 style.width还是offsetWidth的疑惑. 1. 当样式写在行内的时候,如 时,用 style.wid ...

  6. js中isNaN、Number.isNaN,isFinite、Number.isFinite的区别

    判断是否是NaN的方法isNaN 全局作用域中,有个方法,叫isNaN,在判断数据的时候,会将数据做类型转换(可以判断字符串,布尔值等类型) ES6为了纠正数据类型转换的问题,提供了Number.is ...

  7. JS中的NaN和isNaN,简直是双重人格?

     number数字类型 包括数字和NaN,NaN:not a number 但是它是数字类型的 isNaN的用法:检测当前值是否不是有效数字,返回true代表不是有效数字,返回false是有效数字 / ...

  8. JS中的NaN和isNaN

    文章目录 一.NaN:not a number 不是个数字的数字类型 但是属于数字类型 特性:1.NaN是假的布尔值 2.NaN与自己都不相等 二.isNaN is not a number 是不是不 ...

  9. isNaN 和 Number.isNaN 函数的区别?

    函数 isNaN 接收参数后,会尝试将这个参数转换为数值,任何不能被转换为数值的的值都会返回 true,因此非数字值传入也会返回 true ,会影响 NaN 的判断. 函数 Number.isNaN ...

最新文章

  1. 验证码的三种做法[纯数字][纯汉字][字母\数字\汉字混合]C#
  2. linux的磁盘磁头瓷片作用,Linux 磁盘管理
  3. ASP 代码给 ASP 页加密码保护
  4. 160个Crackme030之一元一次方程
  5. svmtrain和svmpredict简介(转)
  6. java加按钮_如何从零开始对接第三方登录(Java版):QQ登录和微博登录
  7. cocoa pods的安装与我遇到的问题
  8. 鸿蒙正式版什么时候上线,终于来了!华为鸿蒙正式版6月2日上线,EMUI时代落幕...
  9. SpringSecurity-1-UserDetails接口
  10. 别人的1024程序员节VS你的1024程序员节
  11. matlab中的myerr,Error in 'MPC1/S-Function' while executing MATLAB S-function 'MY_MPCCon...
  12. SEO专题之四:如何合理有效选定关键字
  13. 【SpringBoot_ANNOTATIONS】组件注册 02 @ComponentScan 自动扫描组件 指定扫描规则
  14. .Net6项目部署IIS步骤
  15. 【SBUS,串口DMA】用STM32F407的串口DMA读取SBUS接收机信号
  16. Ubuntu18.04与deepin+nvidia-docker的构建与踩坑+puppeteer在docker中的使用
  17. 用Python自制一个百度一下,这操作可还行
  18. Groovy - Groovy ambiguous method overload
  19. i春秋《从0到1:CTFer成长之路》通关WP
  20. NLP-文本处理:英文文本挖掘预处理流程总结

热门文章

  1. 华科2020计算机专业录取线,华中科技大学2020录取分数线是多少
  2. 2017.08.12(2) 实例:系统登陆
  3. 浅谈几种网络攻击及攻防原理
  4. Swift UIView代码控制隐藏与显示
  5. 超级计算机应用于石油勘测等方面,算天算地 算人——国家超级计算天津中心主任刘光明解读超级计算机系统应用(二)...
  6. 达梦数据库odbc的安装
  7. 空间权重矩阵与相关性检验(Stata)
  8. Nginx多策略流量分发
  9. 第1周笔记5-Dijkstra最短路径问题
  10. Omnet+Sumo+Veins安装配置总结(win7 win10亲测可行)