Number.isFinite和isFinite与isNaN()和Number.isNaN的区别

发布时间:2026/10/11 0:32:14

Number.isFinite和isFinite与isNaN()和Number.isNaN的区别 断是否为数字(不够完美)function isNumber(value) { return typeof value number !isNaN(value); } // 测试 isNumber(123); // true isNumber(0); // true isNumber(NaN); // false NaN 被排除 isNumber(Infinity); // true 无穷大算数字这里判断出错了 isNumber(123); // false判断是否为数字function isNumber(value) { return typeof value number Number.isFinite(value); }这个办法虽然好但有点累赘了。因为你不清楚Number.isFinite的含义。Number.isFiniteNumber.isFinite(value) 是 ES6 引入的静态方法只有当 value 的类型为 number且该数字不是 NaN也不是 Infinity 或 -Infinity 时才返回 true。Number.isFinite(): 不会类型强制转换isFinite()会类型强制转换。isFinite先将value强制转换为数字number且该数字不是 NaN也不是 Infinity 或 -Infinity 时才返回 true。isFinite()和Number.isFinite()的区别isFinite()会进行强制类型转换而Number.isFinite()不会进行类型转换。Number.isFinite()和isFinite()的详细示例对比// ✅ 对于真正的有限数字两者返回一致 Number.isFinite(123); // true isFinite(123); // true // 对于非有限数字NaN / Infinity Number.isFinite(NaN); // false isFinite(NaN); // false Number.isFinite(Infinity); // false isFinite(Infinity); // false Number.isFinite(undefined); // false isFinite(undefined); // false 强制转化为数字,undefined - NaN Number.isFinite(abc); // false isFinite(abc); // false 强制转化为数字,abc - NaN // ⚠️ 对于非数字类型,开始出现巨大分歧 Number.isFinite(123); // false 因为类型是 string isFinite(123); // true 会进行强制转换,123 -- 123 // ⚠️ 对于,开始出现巨大分歧 Number.isFinite(); // false isFinite(); // true 会进行强制转换 -- 0 // ⚠️ 对于true,开始出现巨大分歧 Number.isFinite(true); // false isFinite(true); // true 会进行强制转换,true - 1 // ⚠️ 对于null,开始出现巨大分歧 Number.isFinite(null); // false isFinite(null); // true 会进行强制转换,null - 0 // ⚠️ 对于[],开始出现巨大分歧 Number.isFinite([]); // false isFinite([]); // true 强制转化为数字,[] - - 0 // ⚠️ 对于数字类型的数组,开始出现巨大分歧 Number.isFinite([5]); // false isFinite([5]); // true [5] - 5 - 5有限什么推荐使用 Number.isFinite更安全避免因隐式转换导致的逻辑漏洞。兼容性ES6出来的主流浏览器支持但是IE不支持更加简洁判断是否是数字的办法(不支持IE)看了上面的讲解判断数字的最佳办法是这个const isNumber Number.isFinite(value)兼容IE判断数字的方法function isNumber(value) { return typeof value number isFinite(value); } console.log(isNumber(Infinity)); // false console.log(isNumber(NaN)); // false console.log(isNumber(1234)); // falseisFinite() IE 兼容性isNaN(value)先将参数 value 强制转换为数字(调用的是ToNumber),再判断转换后的结果是否为 NaN。isNaN(hello) → true hello强制转化为数字NaN,返回true。 isNaN(123abc); → true Number(123abc) NaN isNaN(undefined) → true‌‌ (强制转化为数字NaN因为Number(undefined)是NaN。所以返回true) isNaN({}); → true Number({}) NaN isNaN(123) → false 123 不是NaN返回false isNaN(123) → false 强制转化为数字123123不是NaN返回false。 isNaN(null) → false 强制转化为数字0,因为Number(null)是0。返回false。‌‌ isNaN(); → false 强制转化为数字0,因为Number()是0返回false isNaN( ); → false 强制转化为数字0,因为Number( )是0,返回false isNaN(false); → false Number(false),强制转化为数字0 isNaN([]); → false Number([]),强制转化为数字0Number.isNaN(value)不会对传入的参数value做类型转换。它只在 value 严格等于 NaN 时返回 true其他所有情况都返回 false。Number.isNaN() 和 isNaN()的区别Number.isNaN()不会对传入的参数做类型转换。isNaN()会对传入的参数做类型转换(强制转换为数字)。// 典型的陷阱对比 Number.isNaN(abc); // false 不会转换直接判定不是 NaN返回false isNaN(abc); // true 强制转化为数字类型NaNNumber(abc) NaN 返回true Number.isNaN(undefined); // false 不会转换直接判定不是 NaN返回false isNaN(undefined); // true强制转化为数字类型NaNNumber(undefined) NaN 返回truenumber()几个常见的值转化Number(hello) → NaN Number(123abc) → NaN Number(undefined) → NaN Number({}) → NaN Number(null); → 0 Number(); → 0 Number( ) → 0 Number(false); → 0 Number(true); → 1 Number([]); → 0 Number([5]); → 5 Number([5, 6]); → NaN
延伸阅读

更多相关文章

2026/10/11 16:03:26

药食同源展-2026厦门药食同源功能性食品展览会【官网】

2026厦门国际药食同源功能性食品大会暨博览会 时间:2026年11月05-07日 地址:厦门国际博览中心引领大健康与食品产业融合创新的风向标——2026药食同源功能性食品大会暨博览会将于2026年11月05至07日,在美丽的海滨之城厦门,依托现代…

2026/10/10 20:11:17

LTC6904与PIC18LF46K22协同设计实现高精度方波脉冲生成

1. LTC6904与PIC18LF46K22的硬件协同设计1.1 芯片选型依据与技术特性分析在精确方波脉冲生成系统中,LTC6904和PIC18LF46K22的组合堪称黄金搭档。LTC6904是Linear Technology(现属ADI)推出的精密可编程振荡器,具有0.1Hz至20MHz的频…

2026/10/11 15:58:22

跨江桥梁病害检测与资产标定:YOLOv8数据集构建与训练调参实战

简介:这份资源面向计算机视觉研究者、桥梁监测工程师及目标检测学习者,提供跨江桥梁路面病害与道路资产标定的专用数据集,用于训练裂缝、破损、积水等病害及桥墩、拉索、桥面等结构元素的识别模型,弥补通用数据集在桥梁场景下的适…

2026/10/11 0:02:13

Python调用Gemini Structured Outputs实现工单路由门禁

客服工单最怕的不是模型“答错一句话”,而是它给出一段看起来合理的说明,程序却从中猜错优先级。通俗做法是:要求模型只交 JSON(JavaScript Object Notation,轻量数据格式),再让代码验证它。Gem…

2026/10/11 0:02:13

Spring Boot超市进销存系统毕设实战:从需求拆解到答辩通关

最近带的一个学生项目组里,有A同学跑来问我:选什么毕设题目最稳妥,既能让评审老师觉得工作量够,又不会在答辩时被问到语无伦次。我第一反应就是推荐基于Spring Boot的超市仓库管理系统——也就是超市进销存系统。这个题目乍一看平…

2026/10/11 0:02:13

Flutter StatefulWidget 生命周期核心解析

很多刚开始接触 Flutter 的朋友,在看完一堆“Hello World”和基础组件之后,大概率都会撞上同一堵墙:StatefulWidget 里那堆 initState、build、dispose 方法,到底什么时候被调用?为什么顺序是那样?在里面到…

2026/10/11 0:02:13

Python调用Gemini Structured Outputs实现工单路由门禁

客服工单最怕的不是模型“答错一句话”,而是它给出一段看起来合理的说明,程序却从中猜错优先级。通俗做法是:要求模型只交 JSON(JavaScript Object Notation,轻量数据格式),再让代码验证它。Gem…

2026/10/11 0:02:13

Spring Boot超市进销存系统毕设实战:从需求拆解到答辩通关

最近带的一个学生项目组里,有A同学跑来问我:选什么毕设题目最稳妥,既能让评审老师觉得工作量够,又不会在答辩时被问到语无伦次。我第一反应就是推荐基于Spring Boot的超市仓库管理系统——也就是超市进销存系统。这个题目乍一看平…

2026/10/11 0:02:13

Flutter StatefulWidget 生命周期核心解析

很多刚开始接触 Flutter 的朋友,在看完一堆“Hello World”和基础组件之后,大概率都会撞上同一堵墙:StatefulWidget 里那堆 initState、build、dispose 方法,到底什么时候被调用?为什么顺序是那样?在里面到…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑