You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何isFinite('0/2')返回false,isFinite(0/2)返回true?

为什么isFinite('0/2')和isFinite(0/2)返回结果不同?

首先得明确isFinite()的核心逻辑:它会先把传入的参数通过Number()方法转换为数值,再判断转换后的结果是不是有限的数值(既不是Infinity、-Infinity,也不是NaN)。

咱们拆解两个场景:

  • 当传入0/2时,这是一个JavaScript表达式,会先被计算出结果:0/2 = 0,0是有限数值,所以isFinite(0)自然返回true。
  • 当传入字符串'0/2'时,Number()转换这个字符串会得到NaN——因为'0/2'不是合法的数字格式(只有像'123'、'1e9'这种纯数字或科学计数法的字符串才能被转成有效数值),而isFinite(NaN)会返回false。

再看你给出的'1e9'例子,'1e9'是合法的科学计数法数字字符串,Number('1e9')会得到1000000000,是有限值,所以和数值1e9的返回结果一致,都是true。

内容的提问来源于stack exchange,提问作者Marcus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 19:55:33