JavaScript Number.isFinite() 语法
Number.isFinite() 是 JavaScript Number 对象的一个静态方法,它用于判断某个值是否为有限数。
语法:
Number.isFinite(value)说明:
Number.isFinite() 方法接收单个参数。
value(必选):表示要判断的值。
Number.isFinite() 会返回一个布尔值,即 true 或 false。如果给定值是 Number 类型,并且不是 Infinity、-Infinity 或 NaN,则返回 true。如果是其他所有类型(如字符串、布尔值),则一律返回 false。
提示: isFinite() 是一个静态方法,它只能被类名(即 Number)调用,而不能被实例调用。
JavaScript Number.isFinite() 摘要
| 属于 | JavaScript Number 对象 |
|---|---|
| 使用频率 | 低 |
| 官方文档 | 查看 |
| MDN | 查看 |
JavaScript Number.isFinite() 示例
接下来,我们通过几个有用的例子来讲解 JavaScript Number.isFinite() 是如何使用的。
示例 1:Number.isFinite() 基本用法
console.log(Number.isFinite(360)); // true
console.log(Number.isFinite(Infinity)); // false
console.log(Number.isFinite(Math.PI)); // true运行结果如下。
true
false
true分析:
在 JavaScript 中,Infinity 代表的是无穷大值,而 Math.PI 表示的是圆周率 π。需要注意的是,π(3.14159...)在数学上是无限不循环小数,但在计算机(IEEE 754)中是一个有限的浮点数!
示例 2:isFinite() 判断特殊值
console.log(Number.isFinite(NaN)); // false
console.log(Number.isFinite(undefined)); // false
console.log(Number.isFinite({})); // false
console.log(Number.isFinite([])); // false
console.log(Number.isFinite(null)); // false
console.log(Number.isFinite(true)); // false
console.log(Number.isFinite(false)); // false运行结果如下。
false
false
false
false
false
false
false示例 3:Number.isFinite() 判断字符串
console.log(Number.isFinite("")); // false
console.log(Number.isFinite(" ")); // false
console.log(Number.isFinite("123")); // false
console.log(Number.isFinite("360deg")); // false
console.log(Number.isFinite("hao123")); // false
console.log(Number.isFinite("lvyenet")); // false运行结果如下。
false
false
false
false
false
falseNumber.isFinite() 和 isFinite() 的区别
Number.isFinite() 是一个静态方法,而 isFinite() 是一个全局函数,它们的功能是一样的,都是用于判断一个值是否为无限数。
但在实际开发中,我们更推荐使用 Number.isFinite(),而不是 isFinite() 函数。这是因为 isFinite() 函数会将某些值自动转换为数字,然后再进行判断,这种怪异行为可能会导致结果并不符合预期。
示例 4:isFinite() 会导致怪异行为
console.log(isFinite(NaN)); // false
console.log(isFinite(undefined)); // false
console.log(isFinite({})); // false
console.log(isFinite([])); // true
console.log(isFinite("")); // true
console.log(isFinite(true)); // true
console.log(isFinite(false)); // true
console.log(isFinite(null)); // true运行结果如下。
false
false
false
true
true
true
true
true分析:
对于 isFinite() 来说,它会先尝试将参数转换为数字。
- [] 和 "" 会被转换为 0,true 会被转换为 1,这些都是有限数,所以返回 true(这很容易引起 bug,因为数组明明不是数字)。
- NaN、undefined 和 {} 无法转为有效数字(转为 NaN),所以返回 false。
示例 5:Number.isFinite() 不会导致怪异行为
console.log(Number.isFinite(NaN)); // false
console.log(Number.isFinite(undefined)); // false
console.log(Number.isFinite({})); // false
console.log(Number.isFinite([])); // false
console.log(Number.isFinite("")); // false
console.log(Number.isFinite(true)); // false
console.log(Number.isFinite(false)); // false
console.log(Number.isFinite(null)); // false运行结果如下。
false
false
false
false
false
false
false
false分析:
使用 Number.isFinite() 方法来判断某个值是否为有限数,则不会存在 isFinite() 函数的怪异行为。
