Javascript——NaN有什么用法

简介

在 JavaScript 中,NaN(Not a Number)是一个特殊的值,用来表示非数字的结果,例如一个不合法的数学运算的结果。根据 IEEE 754 浮点数标准,NaN 不等于任何值,包括它自己。这意味着 NaN 是唯一一个与自身不相等的值,所以表达式 NaN === NaN 返回 false。

判断NaN

如果你需要检测一个值是否是 NaN,不能使用传统的比较运算符,而是应该使用 Number.isNaN() 函数或者 isNaN() 函数:

console.log(Number.isNaN(NaN)); // 输出:true
console.log(isNaN(NaN));        // 输出:true// 使用比较运算符检测 NaN 是不行的
console.log(NaN === NaN);       // 输出:false

Number.isNaN() 更为严格,它仅当参数是确切的 NaN 时才返回 true。而全局函数 isNaN() 在参数不是数字或无法转换为数字时也会返回 true。这些函数能够正确处理 NaN 的特殊性质。
在这里插入图片描述在这里插入图片描述

用途

NaN(Not a Number)在 JavaScript 中是一个特殊的值,用于表示某些数学运算的结果不是一个合法的数字。虽然 NaN 本身通常被视为错误的结果,但它在编程中有一些有用的应用场景。
以下是一些使用 NaN 的情况:

  1. 错误检测
    NaN 可以作为一个错误标记来指示无效的数学运算,比如除以零或者字符串解析成数字时失败。这可以帮助编程者识别和处理程序中的潜在错误。
const result = Math.sqrt(-1); // 试图计算负数的平方根
console.log(Number.isNaN(result)); // true,表明结果不是有效数字
  1. 类型转换验证
    当使用像 parseFloat() 或 parseInt() 这样的函数将字符串转换为数字时,如果转换失败,结果会是 NaN。这可以用来验证数据是否能够被成功解析为数字
const value = parseFloat("abc123");
if (Number.isNaN(value)) {console.log("The string cannot be converted into a number.");
}
  1. 占位符
    在某些数值数组或数据结构中,NaN 可以用作占位符,表示缺失或未定义的数值。

  2. 避免异常
    在不实际抛出错误的情况下,NaN 允许程序继续运行,即使遇到了非法的数学运算。

  3. 浮点数运算的结果
    在涉及浮点数的复杂数学运算中,若某个操作无法产生一个精确的浮点数结果,则可能得到 NaN。

尽管 NaN 有其用途,但处理 NaN 需要小心,因为它具有传播性——任何涉及 NaN 的运算都会返回 NaN,这可能导致错误迅速扩散,而且 NaN 不等于自身的特性可能在比较操作中导致混淆。

为了安全地处理 NaN 值,总是使用 Number.isNaN() 来检测 NaN,并且在可能产生 NaN 的运算之后进行必要的错误检查和处理。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JAVA毕业设计158—基于Java+Springboot的二手车交易管理系统(源代码+数据库+万字论文+ppt)

毕设所有选题: https://blog.csdn.net/2303_76227485/article/details/131104075 基于JavaSpringboot的二手车交易管理系统(源代码数据库万字论文ppt)158 一、系统介绍 本项目前后端不分离(可以改为ssm版本),分为用户、管理员两种角色 1、用户&#…

Golang | Leetcode Golang题解之第326题3的幂

题目: 题解: func isPowerOfThree(n int) bool {return n > 0 && 1162261467%n 0 }

AXS4054:单节锂电池充电管理芯片特性与应用推荐

AXS4054是一款单节锂离子电池恒流/恒压线性充电器,芯片集成功率晶体管,充电电流可以用外部电阻设定,蕞大持续充电电流可达600mA,非常适合便携式设备应用,适合USB电源和适配器电源工作,内部采用防倒充电路,不…

鸿蒙AI功能开发【拍照识别文字】

拍照识别文字 介绍 本示例通过使用ohos.multimedia.camera (相机管理)和textRecognition(文字识别)接口来实现识别提取照片内文字的功能。 效果预览 使用说明 1.点击界面下方圆形文字识别图标,弹出文字识别结果信息界面,显示当…

搜狗爬虫(www.sogou.com)IP及UA,真实采集数据

一、数据来源: 1、这批搜狗爬虫(www.sogou.com)IP来源于尚贤达猎头网站采集数据; ​ 2、数据采集时间段:2023年10月-2024年7月; 3、判断标准:主要根据用户代理是否包含“www.sogou.com”和IP核实…

Gazebo之MyRobot建立

Gazebo之MyRobot建立 1. 源由2. 示例Step 1: 新建一个简单世界Step 2: 新建一个模型(model)Step 3: 机器人组成链接(Links)Step 3.1: 新增底盘(Links/Chassis)Step 3.1.1: 惯性属性(Inertial properties)Step 3.1.2: 视觉(Visual)Step 3.1.3: 碰撞(Collision) Step 3.2: 新增左…

C语言 操作符详解

目录 一、操作符的分类 二、二进制和进制转换 2.1 二进制转十进制 2.2 二进制转八进制 2.3 二进制转十六进制 三、原码、反码、补码 四、移位操作符 4.1 左移操作符 ​编辑 4.2 右移操作符 五、位操作符 按位与:& 按位或:| 按位异或&#x…

16个好用到爆的Python实用脚本!

以下是16个非常实用的Python脚本示例,每个脚本都有其特定的用途,并且我会附上相应的源码。这些脚本涵盖了数据处理、网络请求、文件操作等多个方面,非常适合初学者和进阶者学习和使用。 1. 批量重命名文件 import osdef batch_rename(fold…

【Python】数据类型之集合

集合是一个无序、可变、不允许元素重复的容器。 1、定义 v1{11,22,33} 1))无序:集合无法通过索引取值。 2))可变:可以添加和删除集合中的元素。 3))集合不允许元素重复。 例如…

MySQL中常用工具

MySQL自带的系统数据库 常用工具 MySQL mysqladmin mysqlbinlog mysqldump mysqlimport/source mysqlimport只能导入文本文件,不能导入sql文件

C++分析红黑树

目录 红黑树介绍 红黑树的性质与平衡控制关系 红黑树节点的插入 情况1:不需要调整 情况2:uncle节点为红色 情况3:uncle节点为黑色 总结与代码实现 红黑树的删除(待实现) 红黑树的效率 红黑树介绍 红黑树是第二种平衡二…

提前批测开三面,已OC!

大家好,我是洋子 近期百度提前批已经开始有一段时间了,甚至已经有不少 25 届的同学 oc 了,这里分享一位已经顺利 oc 百度提前批测开岗位同学的三轮面试面经 整个三轮技术面试总体难度不高,但考察知识广度比较广,如果…

SQL注入:MySQL元数据库,外网实战手工SQL注入

MySQL元数据库 MySQL的元数据库是一组特殊的数据库,用于存储MySQL服务器的元数据信息,在sql注入中较为常用为以下两种元数据库: information_schema:这个数据库包含了MySQL服务器上所有其他数据库的元数据信息。例如数据库名、表…

AI人工智能为企业带来的优势及应用例子

自2022年知名大型语言模型及其他 AI 产品面世至今,无论商界、政府以至社会各界都逐渐关注人工智能的发展,并纷纷引入 AI 技术,全球正式踏入人工智能的新纪元。根据 Statista 一份有关全球人工智能软件的数据研究,至2025年预测各国…

Pytorch基础模型,数据加载,优化算法

目录 一.nn.Module 二.优化器类 三.损失函数 四.在GPU上运行代码 五.常见的优化算法 1.梯度下降算法 2.动量法: 3.AdaGrad 4.RMSProp 六.Pytorch中的数据加载 1.数据集类 2.迭代数据集 2.Pytorch自带的数据集 一.nn.Module nn.Modul是torch.nn提供的一个…

趋动科技荣登「AIGC赋能金融创新引领者TOP20」

2023年11月28日,“极新AIGC行业峰会”在北京召开,峰会以“AI落地”为指引,探究AI实践与产业化。 从制造业到金融服务业,从医疗保健到交通运输,从文化娱乐到消费零售,智能客服、数字人直播、智能巡检机器人&…

vue前端项目--路由vue-router

1. 路由介绍 我们可以总结一下从早期网站开发到现代单页应用(SPA)的发展过程及其关键概念: 早期的服务器端渲染 (SSR): 早期的网站开发中,服务器负责生成完整的 HTML 页面,并将其发送给客户端展示。 每个 URL 对应一个特定的控制器(Control…

基于CUDA12.1+CUDNN8.9+PYTORCH2.3.1,实现自定义数据集训练

目录 0 结果预览 1 核心点 2 参考链接 0 结果预览 1 核心点 yolo命令行CL需要将虚拟环境的yolo程序加入系统路径。 遇到conda install 失效问题,重建新的虚拟环境,再进行安装。 whl可以下载好后再安装。 pip install F:\tool\ai\torch-2.3.1cu…

leetcode日记(64)最小覆盖子串

很复杂的题目,无论是思路还是实践都很难… 思路还是看了答案(?)设定两个指针“框”出一串字符串,初始两个指针都指在s的零位,先移动下指针,直到使框出的字符串中包含t中所有字符串,…

JDK17安装与配置

为了学习spring boot3.x,首先确保本地安装了17以上的jdk版本。 安装版本:jdk-17.0.10_windows-x64_bin.exe 傻瓜式安装,步骤省略,这里设置的安装位置:D:\Programs\Java\jdk-17 JAVA_HOME环境变量配置: #…