0

0

JavaScript中Infinity无穷大的产生场景与处理方案

冰川箭仙

冰川箭仙

发布时间:2026-03-12 16:40:36

|

210人浏览过

|

来源于php中文网

原创

Infinity 是 JavaScript 中表示正无穷大的合法数值,-Infinity 表示负无穷大;常见于非零数除以 0、超范围运算、Math 函数返回及显式赋值;需用 Number.isFinite() 等方式准确识别;易导致 UI 异常、计算崩溃等问题,应通过校验分母、过滤无穷值、封装安全函数等方式防御。

javascript中infinity无穷大的产生场景与处理方案

JavaScript 中的 Infinity 是一个特殊的数值,表示正无穷大;对应地还有 -Infinity 表示负无穷大。它不是错误,而是合法的 Number 类型值,但容易在计算中引发意外行为。理解它怎么来、怎么识别、怎么处理,对写健壮代码很关键。

哪些操作会生成 Infinity

以下常见场景会直接产出 Infinity-Infinity

  • 非零数除以 0:5 / 0Infinity-5 / 0-Infinity
  • 超出浮点数最大安全范围的运算:Number.MAX_VALUE * 2Infinity
  • Math 函数返回无穷:如 Math.log(0)-InfinityMath.exp(1000)Infinity
  • 显式赋值:let x = Infinity;let y = 1/0;

如何准确判断一个值是不是 Infinity

不能只靠 =====,因为 Infinity !== Infinity 在某些旧环境有陷阱(虽然现代标准下是 true),更稳妥的方式是用内置方法:

Krea AI
Krea AI

多功能的一站式AI图像生成和编辑平台

下载
  • isFinite(x):返回 falsexInfinity-InfinityNaN
  • Number.isFinite(x):更严格,只对有限数字返回 true,不尝试类型转换(推荐)
  • x === Infinityx === -Infinity:在确定是 number 类型时可用,但需先排除 NaN
  • typeof x === 'number' && !isFinite(x):组合判断,可区分 InfinityNaN

Infinity 在实际逻辑中容易出问题的地方

它常悄无声息地破坏比较、聚合或渲染逻辑:

立即学习Java免费学习笔记(深入)”;

  • 数组求最大值:Math.max(...[1, 2, Infinity])Infinity,可能让后续 UI 显示异常或接口校验失败
  • 时间差计算误得负无穷:new Date().getTime() - nullNaN,但若误写成 / 0 就得 Infinity
  • 前端分页计算:Math.ceil(total / pageSize),当 pageSize 为 0 时结果是 Infinity,导致页码渲染崩溃
  • 图表库传入无穷坐标:很多可视化库不处理 Infinity,直接报错或白屏

实用的防御性处理方案

在关键数值路径上加一层“消毒”即可大幅降低风险:

  • 除法前校验分母:const result = divisor === 0 ? 0 : dividend / divisor;
  • 聚合前过滤无穷值:arr.filter(Number.isFinite).reduce((a, b) => a + b, 0)
  • 封装安全除法函数:function safeDiv(a, b) { return b === 0 ? 0 : a / b; }
  • 后端返回数值字段时,前端解析后主动清理:if (!Number.isFinite(val)) val = null; 或默认值

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
c语言中null和NULL的区别
c语言中null和NULL的区别

c语言中null和NULL的区别是:null是C语言中的一个宏定义,通常用来表示一个空指针,可以用于初始化指针变量,或者在条件语句中判断指针是否为空;NULL是C语言中的一个预定义常量,通常用来表示一个空值,用于表示一个空的指针、空的指针数组或者空的结构体指针。

254

2023.09.22

java中null的用法
java中null的用法

在Java中,null表示一个引用类型的变量不指向任何对象。可以将null赋值给任何引用类型的变量,包括类、接口、数组、字符串等。想了解更多null的相关内容,可以阅读本专题下面的文章。

1089

2024.03.01

if什么意思
if什么意思

if的意思是“如果”的条件。它是一个用于引导条件语句的关键词,用于根据特定条件的真假情况来执行不同的代码块。本专题提供if什么意思的相关文章,供大家免费阅读。

846

2023.08.22

c语言const用法
c语言const用法

const是关键字,可以用于声明常量、函数参数中的const修饰符、const修饰函数返回值、const修饰指针。详细介绍:1、声明常量,const关键字可用于声明常量,常量的值在程序运行期间不可修改,常量可以是基本数据类型,如整数、浮点数、字符等,也可是自定义的数据类型;2、函数参数中的const修饰符,const关键字可用于函数的参数中,表示该参数在函数内部不可修改等等。

562

2023.09.20

硬盘接口类型介绍
硬盘接口类型介绍

硬盘接口类型有IDE、SATA、SCSI、Fibre Channel、USB、eSATA、mSATA、PCIe等等。详细介绍:1、IDE接口是一种并行接口,主要用于连接硬盘和光驱等设备,它主要有两种类型:ATA和ATAPI,IDE接口已经逐渐被SATA接口;2、SATA接口是一种串行接口,相较于IDE接口,它具有更高的传输速度、更低的功耗和更小的体积;3、SCSI接口等等。

1925

2023.10.19

PHP接口编写教程
PHP接口编写教程

本专题整合了PHP接口编写教程,阅读专题下面的文章了解更多详细内容。

656

2025.10.17

php8.4实现接口限流的教程
php8.4实现接口限流的教程

PHP8.4本身不内置限流功能,需借助Redis(令牌桶)或Swoole(漏桶)实现;文件锁因I/O瓶颈、无跨机共享、秒级精度等缺陷不适用高并发场景。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2395

2025.12.29

java接口相关教程
java接口相关教程

本专题整合了java接口相关内容,阅读专题下面的文章了解更多详细内容。

47

2026.01.19

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

76

2026.03.11

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
React 教程
React 教程

共58课时 | 6万人学习

TypeScript 教程
TypeScript 教程

共19课时 | 3.4万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 3.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号