Javascript——NaN有什么用法

news2024/11/26 14:47:41

简介

在 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.coloradmin.cn/o/1985707.html

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

相关文章

腾讯云服务器windows系统如何转linux系统

本人购买了腾讯云服务,进去后发现是windows系统的,有点郁闷(使用不习惯),于是就去查查看看能不能将Windows系统转成linux系统,网上也有解决办法,但是貌似跟现在的腾讯云后台不一致,下…

dlid源码快速安装——百分百成功

前言 之前安装过一次dlib折腾了很久,最近子啊新的服务器上重新安装dlib这个包又遇到了一些问题,这里简单记录一下。 安装 我这里选择的是直接使用源码安装(之前尝试过其他的安装方法,但是都失败了,索性这次就直接使用…

基于Java和Mysql的多人命题系统

你好呀,我是计算机学姐码农小野!如果有相关需求,可以私信联系我。 开发语言:Java 数据库:MySQL 技术:B/S架构、SSM框架 工具:Eclipse开发工具 系统展示 首页 管理员界面 教师管理界面 学生…

OZON热销文具产品,OZON文具有哪些热销品

OZON平台上的热销文具产品种类繁多,这些产品不仅满足了消费者在日常学习、办公中的需求,还体现了市场的趋势和消费者的偏好。以下是一些OZON平台上的热销文具产品及其特点: OZON热销文具产品地址:D。DDqbt。COm/74rD Top1 蓝色…

揭秘!结构健康自动化监测:高效精准,为何远超传统人工监测?

人工检测是依靠目测检查或借助于便携式仪器测量得到的信息,但是随着整个行业的发展,传统的人工检测方法已经不能满足检测需求,从人工检测到自动化监测已是必然趋势。 a. 从检测方式看 人工检测需要耗费大量的精力,从摆放检测工具到…

机器学习算法———深度学习(常见的结构)

👨‍💻个人主页:开发者-曼亿点 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 曼亿点 原创 👨‍💻 收录于专栏&#xff1a…

【wiki知识库】07.用户管理前端模块的添加-前端部分

🍊 编程有易不绕弯,成长之路不孤单! 目录 🍊 编程有易不绕弯,成长之路不孤单! 一、今日目标 二、前端部分的改造 2.1 修改the-header文件 2.2 用户展示/admin/user组件添加 2.2.1 /admin/user代码如下…

杂谈c语言——3.内存对齐

先看两个例子: typedef struct S {int a;double b;char c; }S;typedef struct B {int a;char b;double c; }B;int main() {printf("S : %d\n", sizeof(S));printf("B : %d\n", sizeof(B));return 0; } 结果为: S:24; B:16&#xff…

【Qt】项目代码

main.cpp文件 argc:命令行参数个数。*argv[ ]:每一个命令行参数的内容。main的形参就是命令行参数。QApplication a(argc, argv) 编写一个Qt的图形化界面程序,一定需要QApplication对象。 widget w; 在创建项目的时候,勾选widg…

AI岗位平均月薪已经超过4.6万,程序员该如何抓住这个机遇?

前言 自从ChatGPT横空出世以来,市场上一直用“iPhone时刻”、“划时代”、“工业革命”等词汇来形容AI领域的飞速进展。如今,随着AI大模型的竞争日益激烈,这个领域正在以前所未有的速度向前发展。 AI大模型的革命性突破 OpenAI最新推出的G…

Linux--网络层IP

IP协议 IP协议,全称Internet Protocol(互联网协议),是TCP/IP协议族中的核心协议之一,用于在互联网络上进行数据的传输。IP协议的主要功能是确保数据从一个网络节点(如计算机、服务器、路由器等&#xff09…

【C++第11章】Vector

【C第11章】Vector vector介绍🧐 vector是表示可变大小数组的序列容器,它类似于数组,但大小可以动态改变,并且大小会被容器自动处理。本质上说,vector使用动态分配数组来存储元素,为了减少扩容代价&#x…

音频剪辑软件哪个好用?音乐制作必备的6款音频剪辑工具

在这个充满声音的世界里,音乐和音频不仅仅是艺术表达的一种形式,更是情感的载体,是故事的讲述者。 你是否曾想过,那些令人动容的电影配乐、让人热血沸腾的电音节拍或是清晨唤醒你的温柔闹钟,是如何从一堆杂乱无章的声…

坐牢第二十三天 20240806(IO)

一.作业 1> 使用消息队列完成两个进程之间相互通信 A.c #include <myhead.h> // 要发送的消息类型 struct msgbuf {long mtype; /* message type, must be > 0 */char mtext[1024]; /* message data */ }; #define SIZE sizeof(struct msgbuf) - sizeof(l…

PEPM系统Cookie请求头远程代码执行漏洞复现 [附POC]

文章目录 PEPM系统Cookie请求头远程代码执行漏洞复现 [附POC]0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现PEPM系统Cookie请求头远程代码执行漏洞复现 [附POC] 0x01 前言 免责声明:请勿利用文章内的相关技术从事非法测试,…

mem0ai+ollama+qwen2搭建中文版运行环境

准备模型 支持function的qwen2模型 随便找了一个&#xff0c;也可以下载其他支持function的模型&#xff0c;或者自己下载模型文件搭建 ollama run sam4096/qwen2toolsembedder 模型 ollama run nomic-embed-text拉取mem0ai 源码&#xff0c;切换对应分支 git clone https…

【Foundation】(三)transformers之Model

文章目录 1、介绍1.1、 模型类型1.2、Model Head 2、模型加载3、模型调用3.1、不带Model Head的模型调用3.2、带Model Head的模型调用 4、模型微调实战4.1、导包4.2、加载数据4.3、创建数据集4.4、划分数据集4.5、创建加载器4.6、创建模型以及优化器4.7、模型训练4.8、模型评估…

Figma 替代品 Excalidraw 安装和使用教程

如今远程办公盛行&#xff0c;一个好用的在线白板工具对于团队协作至关重要。然而&#xff0c;市面上的大多数白板应用要么功能单一&#xff0c;要么操作复杂&#xff0c;难以满足用户的多样化需求。尤其是在进行头脑风暴、流程设计或产品原型绘制时&#xff0c;我们常常会遇到…

linux入门到精通-第二十章-bufferevent(开源高性能事件通知库)

目录 参考bufferevent简单介绍工作流程事件Api新建事件节点 bufferevent_socket_new设置事件节点回调bufferevent_setcb使事件势能bufferevent_enable发送数据bufferevent_write接收数据bufferevent_read evconnlistener的简介 参考 视频教程 libevent的基本使用 libevent–bu…

HslCommunicationDemo各品牌Plc通信测试软件工具

目录 1、HslCommunicationDemo程序包 2、ModbusTCP举例说明 (0)概述 &#xff08;1&#xff09;线圈写操作 &#xff08;2&#xff09;寄存器写操作 3、C#工程中DLL库文件使用 &#xff08;1&#xff09;创建Winform程序工程 &#xff08;2&#xff09;写寄存器 1、HslC…