函数说明 MDN 中描述 isFinite() 函数: 确定函数的参数是否为有限数, 可以将参数转化为数字,
JS 高程这样描述 isFinite 函数: 在参数位于最小与最大数值之间时会返回 true
综上: isFinite() 方法就是在 - Infinity 和 Infinity 之间返回 true, 否则返回 false;
大多数 js 书籍中, 都说 Number.MAX_VALUE 是 js 中能表示的最大的数值, 比这个数还大的数会变成 infinity, 但是实际测试一下, 你就会发现 Number.MAX_VALUE+1 的值仍然是 1.7976931348623157e+308, 加 100 也是, 加 1000 还是?
因此, 当你使用 isFinite 函数去判断时, 其返回值是 true. 而不像书中说的大于 MAX_VALUE 的数表示无穷大.
- console.log(isFinite(Number.MAX_VALUE)) // true
- console.log(isFinite(Number.MAX_VALUE + 1)) // true
- console.log(isFinite(Number.MAX_VALUE + 100)) // true
- console.log(isFinite(Number.MAX_VALUE + 1000)) // true
- console.log(isFinite(Number.MAX_VALUE + Number.MAX_VALUE)) //false
但是对于乘法却是比较诡异:
console.log(Number.MAX_VALUE * 1.00000001 === Infinity) //true
其他测试情况
- 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
请多指教.
来源: http://www.qdfuns.com/issue/27225/f22f115e02e4f5e8c2443f3b7ccef1ba.html