首页 > 编程语言 >Javascript——NaN有什么用法

Javascript——NaN有什么用法

时间:2024-08-06 18:27:09浏览次数:15  
标签:isNaN console 运算 Javascript NaN Number 用法 log

简介

在 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 的运算之后进行必要的错误检查和处理。

标签:isNaN,console,运算,Javascript,NaN,Number,用法,log
From: https://blog.csdn.net/weixin_45705239/article/details/140962966

相关文章

  • 【深入剖析】Spring依赖注入的最佳实践(@Autowired的正确用法)
    文章目录为什么Spring不推荐使用@Autowired进行字段注入?字段注入的使用与弊端1.不可见的依赖关系2.无法使用final修饰符3.测试不便推荐的替代方案1.构造器注入构造器注入的优势包括2.设值注入设值注入的优势包括总结为什么Spring不推荐使用@Autowired进行字......
  • 笠鬼bug的用法及注意事项是什么?小白也能懂!笠鬼风灵月影修改器快速启动三步秘籍
    在《笠鬼》这款游戏中,通常提到的“bug”是指游戏程序中的错误或漏洞,它们可能允许玩家以非预期的方式获得优势或绕过游戏的正常机制。然而,玩家通常不会主动“使用”bug,因为这样做可能违反游戏的服务条款,并可能导致账号被封禁。不过,从另一个角度来看,玩家可能会寻找或使用游戏修......
  • JavaScript 中的“this”几种不同含义
    在JavaScript中,“ this ”指的是当前正在执行代码的对象。其值由函数的调用方式动态确定,这意味着它可以根据上下文而变化。1.全球背景在全局上下文中(即任何函数或对象之外),“ this”指的是全局对象。在浏览器中,“ this”是窗口对象,而在Node.js中,它是全局对象。2.对象......
  • 【TS】 TypeScript声明文件:打通JavaScript和TypeScript的桥梁
     TypeScript声明文件的讲解: TypeScript声明文件(DeclarationFile)在TypeScript项目中具有举足轻重的地位,它是连接TypeScript严格的类型系统与外部无类型或类型不明确的JavaScript代码的关键纽带。 声明文件的核心价值在于为TypeScript编译器提供必要的类型信息......
  • selenium复习之---原理+基础用法
    简介1.是什么selenium是用来进行页面元素定位的第三方库,用来进行web自动化测试的工具,可以直接运行在浏览器中。2.原理:selenium在工作过程中有三个角色,selenium客户端、webdriver和浏览器selenium客户端是开发者与selenium的交互接口,它会发送指令给webdriver浏览器则接收来自......
  • JavaScript(二十二)——JavaScript this 关键字
    目录方法中的this单独使用this函数中使用this(默认)函数中使用this(严格模式)事件中的this对象方法中绑定显式函数绑定面向对象语言中this表示当前对象的一个引用。但在JavaScript中this不是固定不变的,它会随着执行环境的改变而改变。在方法中,this表示该方......
  • Jetson Orin nano 安装ubuntu22.04
    最近项目需要给底盘部署建图以及定位导航,底盘用的是Jetsonorinnano,用的是Ros2humble版本的机器人操作系统,由于humble版本的系统只支持ubuntu22.04,所以需要在orinnano上重新烧录ubuntu22.04,但是这个版本的系统跟之前的有些不一样,也踩了很多坑,查阅了官网的相关资料后,已经......
  • EFK之filebeat用法进阶
    接上一章节:https://blog.csdn.net/weixin_46546303/article/details/140279197?spm=1001.2014.3001.5501一、filebeatmodule输入流1.filebeatmodule作用Filebeat模块的主要作用是简化日志数据的收集和处理过程。通过使用模块,你可以快速地配置Filebeat来收集特定类......
  • mysql8.0.33绿色版本安装以及用法
    绿色mysqlMySQL官网MySQL::DownloadMySQLCommunityServer(ArchivedVersions)[root@mysql~]#rm-rf/etc/my.cnf[root@mysql~]#find/-name"*mysql*"-execrm-rf{}\;        //清除以前的环境[root@mysql~]#tar-xvfmysql-8.0.33-li......
  • JavaScript 中的闭包和事件委托
    包(Closures)闭包是JavaScript中一个非常强大的特性,它允许函数访问其外部作用域中的变量,即使在该函数被调用时,外部作用域已经执行完毕。闭包可以帮助我们实现数据的私有化、封装和模块化,使代码更简洁、易读和可维护。闭包的定义简单来说,闭包是指有权访问另一个函数作......