JavaScript Number.isFinite() 方法

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
false

Number.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() 函数的怪异行为。

上一篇: Number.isNaN()

下一篇: Number.parseInt()

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号