判断一个变量是否是NaN

判断一个数是否是NaN都会想到NaN===NaN 判断是否相等,可是这个方法是不行的。那为什么这个方法是不行的呢,其实从字面意思理解就ok了。NaN(not a number),意思是不是一个数字,不是一个数字和另外一个不是一个数字相比较。这个好像没法比较吧,字符串 aaaa (not a number),字符串bbbb (not a number) 这两个字符串都是NaN,那你说它俩相不相等呢。显然是不相等的。
还有一个方法,js提供了isNaN() 的方法,判断是否是NaN,但是有一个问题,isNaN只能判断是不是NaN并不能判断这个变量是否是数字。比如:

isNaN('a'); true

这个效果不是我想看到的。

所以我们还是要手动处理一下,使用isNaN前面先判断一下变量是否是number类型的

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

这样如果变量是number类型的前提下再满足isNaN就可以了。其他的属性类型一概返回false;

console.log(IsNaN('a'));//false
console.log(IsNaN(0));//false
console.log(IsNaN(NaN));//true
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 9,674评论 0 13
  • 变量 声明变量 命名变量区分大小写的语言第一个字符是字母或下划线_,数字不能作为第一个字符字符必须是字母,数字或者...
    flyingtoparis阅读 4,212评论 0 0
  • 教程 https://wangdoc.com/javascript/types/general.html 1 概述...
    智勇双全的小六阅读 3,693评论 0 0
  • 常见同步工具类 闭锁 FutureTask 信号量 栅栏 阻塞队列 构建自己的同步工具类 介绍 同步工具类可以是任...
    zlcook阅读 1,371评论 0 0
  • 我在用简书啦!
    呆子啊阅读 1,456评论 0 0