JavaScript判断是否为NaN

news2024/11/23 21:59:44
(旅行是最劳顿,最麻烦,叫人本相必现的时候。经过长期苦旅行而彼此不讨厌的人,才可以结交作朋友。——钱钟书)

在这里插入图片描述

为什么NaN在js值得一提

相信你在实际开发中,经常遇到一下场景

const pasNumber = parseInt(undefined);
console.log(pasNumber); // NaN
console.log(typeof pasNumber === 'number'); // true
console.log(Object.prototype.toString.call(pasNumber)); // '[object Number]'
console.log(NaN === NaN); // false

业务中不可避免的有些字段是空值,但经过转换后会变为NaN值,而在js中NaN的类型无论怎么判断都是数字,并且奇怪的是NaN并不等于NaN。

如何正确的对NaN做出判断

NaN的字面意思是Not-a-Number,其在计算机科学中属于计算中的缺失值。
NaN的由来说明
在js中可以是同isNaN方法来进行判断。

isNaN = function(value) {
    var n = Number(value);//此处对参数进行强制类型转换
    return n !== n;
};
console.log(isNaN(NaN)); // true
console.log(isNaN('123a')); // true
console.log(isNaN([1, 2, 3])); // true
console.log(isNaN({})); // true

但我们发现,因为每次都先将值进行数字强转,导致一些非NaN的值也被误判成了NaN。

所以在es5又给Number添加了isNaN方法,它的源码是这样的。

Number.isNaN = function(value) {
    return value !== value;
};
console.log(Number.isNaN(NaN)); // true
console.log(Number.isNaN('123a')); // false
console.log(Number.isNaN([1, 2, 3])); // false
console.log(Number.isNaN({})); // false

因为在js中,只有NaN是不等于自身的,所以Number.isNaN更为严谨。

所以,在后续的js编码中,对NaN的处理我们也可以尽量使用Number.isNaN了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/489947.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

财报解读:照明行业景气上行,欧普照明已步入增长“快车道”

2023年,随着文旅景观照明复苏,教室照明市场蓬勃发展,双碳战略下照明数字化系统加速建设,照明企业迎来行业曙光。近日,A股绿色照明龙头企业欧普照明股份有限公司(下称“欧普照明”,股票代码60351…

刷题记录˃ʍ˂

一、1033. 移动石子直到连续 思路 这道题是一道数学题,它一共分为三种可能 第一种可能为三个石子本来就是连续的时候 第二种可能为最少步数为1的时候,相邻石子不能大于一格 第三种可能为最少步数为2的时候,这时相邻石子大于一格 那么第二…

华为MPLS跨域C1方式RR场景(数据经过RR)实验配置

目录 配置BGP邻居的建立 配置MPLS LDP 配置RR之间的MP-BGP邻居 根据图配置接口的IP地址和IGP协议 配置BGP邻居的建立 PE1和RR1建立IBGP邻居、RR1和ASBR1建立IBGP邻居(RR1作为反射器) PE1和RR1建立MP-IBGP邻居(RR1传给PE1的Vpnv4路由要求更…

2023 hnust 大三下 人工智能导论课程 期中考试复习笔记

前言 ★大概率考✦个人推测考点※补充内容没有完全覆盖“人工智能导论复习2023.pdf”的重点致谢:hwl、lyf、lqx 题型 问答:5*10分综合:15分设计:25分开放题/论述题:10分 第1章 绪论 人工智能的定义 智能 思考与…

Android ADB安装apk失败:INSTALL_FAILED_TEST_ONLY

droid ADB安装apk失败:INSTALL_FAILED_TEST_ONLY 解决: 1、一种是在代码里面加, 在gradle.properties配置文件加入属性,把testOnly设置为false Android安装apk失败:The application could not be installed: INSTALL_FAILED_TES…

Java内存模型之JMM

计算机硬件存储系统 因为有这么多级的缓存(cpu和物理主内存的速度不一致) CPU的运行并不是直接操作内存而是把内存里边的数据读取到缓存,而内存的读和写操作的时候就会造成不一致的问题 JVM规范中试图定义一种Java的内存模型(ja…

【算法与数据结构】递归函数设计技巧

数学归纳法 step1: 验证P(1)成立step2: 证明如果P(k)成立,那么P(k1)也成立step3: 联合step1和step2,证明由P(1)->P(n)成立 例1: 证明: 1 3 . . . ( 2 n − 1 ) n 2 13...(2n-1) n^2 13...(2n−1)n2 证明P(1)成立&#…

Midjourney之logo设计(建议收藏)

目录 宠物诊所的logo设计 常见的Logo类型 图形logo: 字母LOGO APP LOGO 进阶技巧 设置艺术家风格 去掉不需要的元素 ChatGPT Midjourney设计logo 聊天(国产):文心一言通义千问 绘图(国产) UI设计 ChatGP…

LangChain入门(四)-构建本地知识库问答机器人

在这个例子中,我们会介绍如何从我们本地读取多个文档构建知识库,并且使用 Openai API 在知识库中进行搜索并给出答案。 目录 一、安装向量数据库chromadb和tiktoken 二、使用案例 三、embeddings持久化 四、在线的向量数据库Pinecone 一、安装向量数…

Maya云渲染怎么操作?看这一篇就够了

Autodesk Maya 是一款3D动画和视觉效果软件,拥有强大的角色建模、绑定、动画和模拟工具集,与Maya兼容的渲染器包括 Arnold(默认渲染器)、iRay、Maxwell、ProRender、Octane、Redshift、V-Ray、RenderMan 等。 与 Autodesk 的所有产…

异常排查 | 有关页面部署Tomcat造成的端口冲突问题

今日在写Servlet的时候,将网页部署到tomcat时,出现了如下错误👇 严重 [main] org.apache.catalina.core.StandardService.initInternal Failed to initialize connector [Connector[HTTP/1.1-8080]]一开始其实还没有发现这个地方出了问题&…

安装适用于Linux的Windows11子系统(WSL2)

1. 主板BIOS开启虚拟化 开启虚拟化需要在BIOS中进行设置,进入主板BIOS→找到虚拟化设置→开启。 2. 检验是否开启虚拟化 打开Windows命令行,并运行 systeminfo固件中已启用虚拟化为是,代表主板BIOS已经开启虚拟化。 3. 启用Windows功能…

操作系统——内存管理

0.关注博主有更多知识 操作系统入门知识合集 目录 7.1内存管理功能 思考题: 7.2物理内存管理 7.2.1分区内存管理 思考题: 7.2.2分区放置策略 7.2.3内存覆盖技术 7.2.4内存交换技术 7.2.5内存碎片 7.3虚拟内存管理 7.3.1页式虚拟存储管理 思…

安全服务体系建设主体内容

安全服务体系建设总共10类工作内容,每类分若干咨询方案或技术实施方案,同时也是一个长期建设与服务的工作,这些工作都是依据《网络安全等级保护基本要求》、《网络安全等级保护安全设计技术要求》《网络安全等级保护定级指南》。关于如何定级在这篇 等保定级报告模版_luozho…

STM32F4_USMART调试组件

目录 1. USMART是什么? 2. USMART的特点 3. USMART实现流程 4. USMART组件 5. 在usmart_config.c中添加想要被USMART调用的函数 6. 实验程序 6.1 main.c 6.2 usmart.c 6.3 usmart.h 7. USMART调试的优越性说明 1. USMART是什么? USMART 是 AL…

压力测试工具Jmeter安装及使用

1.安装Jmeter Jmeter依赖于JDK,所以必须确保当前计算机上已经安装了JDK,并且配置了环境变量。 1.1.下载 可以Apache Jmeter官网下载,地址:http://jmeter.apache.org/download_jmeter.cgi 1.2.解压 因为下载的是zip包&#xff…

三次样条曲线CubicSpline

本文参考老张在上海轨迹规划 之 三次样条曲线(概念性质) - 知乎 (zhihu.com) 什么是三次样条曲线 之 三次 样条是一种数据插值的方式,在多项式插值中,多项式是给出的单一公式来尽可能满足所有的数据点,而样条则使用多…

刷题刷题。

租用游艇 1.格式化输入二维数组&#xff1a;1-2&#xff0c;1-3&#xff0c;1-4&#xff0c;2-3&#xff0c;2-4&#xff0c;3-4... ... for(int i1; i<n-1; i) for(int ji1; j<n; j) 2.三重for循环枚举路径&#xff1a;第…

D. Unique Palindromes(回文串/构造)

题目 题意 给定字符串的长度&#xff0c;以及k个条件。 对于每个条件&#xff0c;给定x和c&#xff0c;表示原字符串的长度为x的前缀字符串&#xff0c;存在c个互不相同的回文子串。 原字符串由26个小写字母组成。 构造出长度为n&#xff0c;且满足上述k个条件的字符串。如果…

不黑艺术学社京藏行——参观五台山孙溟㠭为五台山红英师治印

不黑学社社长孙溟㠭先生与五台山菩萨顶主事红英师 不黑学社京藏行&#xff0c;路经五台把佛拜。 巍巍五台清凉境&#xff0c;参访伊始菩萨顶。 感恩“天珠”刘诗语&#xff0c;芬芳佛语满香华。 感恩慈悲红英师&#xff0c;带众参拜大白塔。 菩萨顶上如意宝&#xff0c;莲…