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