isFinite方法详解

本文详细解析JavaScript的isFinite()函数,该函数用于判断参数是否为有限数值。在-Infinity和Infinity之间,isFinite()返回true,否则返回false。了解isFinite()的关键在于如何判断正负无穷。查阅MDN和StackOverflow上的相关资料,可以帮助深入理解该函数的用法和潜在陷阱。

MDN中描述isFinite()函数:确定函数的参数是否为有限数,可以将参数转化为数字,

JS高程设计这样描述isFinite()函数:在参数位于最小与最大数值之间时会返回true

综上:isFinite()方法就是在-Infinity和Infinity之间返回true,否则返回false;


Number.MAX_VALUE + 1 ===  Number.MAX_VALUE + 2   //true
Number.MAX_VALUE + 1 ===  Number.MAX_VALUE + 999999   //true
Number.MAX_VALUE + 1 ===  Number.MAX_VALUE + 999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 // true
运用科学计数法可以这样写:
Number.MAX_VALUE + 1 === Number.MAX_VALUE + (1e+291)

当在增加一个9时,就会变成false
Number.MAX_VALUE + 1 ===  Number.MAX_VALUE + 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 // false
科学计数法也可以这样写:
Number.MAX_VALUE + 1 === Number.MAX_VALUE + (1e+292)


但是对于乘法却是比较诡异:
Number.MAX_VALUE * 1.00000001 === Infinity

所以:
isFinite(Number.MAX_VALUE * 1.00000001)  //false
isFinite(Number.MAX_VALUE+(Number.MAX_VALUE))   //false

isFinite(Infinity);  // false
isFinite(NaN);       // false
isFinite(-Infinity); // false

isFinite(0);         // true
isFinite(2e64);      // true
isFinite(910);       // true

isFinite(null);      // true

isFinite('0');       // true
isFinite('hello')    //false
isFinite(true)       //true
isFinite(false)      //true


难点就是判断数据是否为正无穷或者负无穷,规则上面已经提到过!

可以参照如下链接:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/isFinite

         https://stackoverflow.com/questions/10837670/adding-to-number-max-value

         https://stackoverflow.com/questions/25532240/isfinitenumber-max-value-1-returns-true

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值