JavaScript isFinite() 函数

JavaScript isFinite() 语法

isFinite() 是 JavaScript 的一个全局函数,它用于判断某个值是否为有限数。与 Number.isFinite() 方法不同,isFinite() 函数会在判断前尝试将参数转换为一个数字。

语法:

isFinite(value)

说明:

isFinite() 函数会尝试将 “非数字值” 转换为 “数字” 。这是它与更严格的 Number.isFinite() 方法的主要区别。

  • 如果 value 是 NaNInfinity 或 -Infinity,则 isFinite() 返回 false。
  • 如果 value 不能被转换为一个有效的有限数字(例如,字符串 "hello"),则 isFinite() 返回 false。
  • 如果 value 可以被转换为一个有限的数字,则 isFinite() 返回 true。

提示: isFinite() 是一个全局函数(顶层函数),我们可以直接调用而无需创建实例。

JavaScript isFinite() 摘要

属于 JavaScript 全局对象
使用频率
官方文档 查看
MDN 查看

JavaScript isFinite() 示例

接下来,我们通过几个简单的例子来讲解一下 JavaScript isFinite() 是如何使用的。

示例 1:isFinite() 基本用法

console.log(isFinite(360));           // true
console.log(isFinite(Infinity));      // false
console.log(isFinite(Math.PI));       // true

运行结果如下。

true
false
true

分析:

在 JavaScript 中,Infinity 代表的是无穷大值,而 Math.PI 表示的是圆周率 π。

示例 2:isFinite() 判断特殊值

console.log(isFinite(NaN));          // false
console.log(isFinite(undefined));     // false
console.log(isFinite({}));            // false

console.log(isFinite([]));            // true
console.log(isFinite(null));          // true
console.log(isFinite(true));          // true
console.log(isFinite(false));         // true

运行结果如下。

false
false
false
true
true
true
true

分析:

对于 undefined 和 {},isFinite() 会认为其为 Infinity 值,此时会返回 false。

而对于 []、null、true、false 等值,isFinity() 会将其转换为对应的数字,然后再进行判断。其中 [] 会转换为 0,null 会转换为 0,true 会转换为 1,false 会转换为 0。

示例 3:isFinite() 判断字符串

console.log(isFinite(""));             // true
console.log(isFinite(" "));            // true
console.log(isFinite("123"));          // true

console.log(isFinite("360deg"));       // false
console.log(isFinite("hao123"));       // false
console.log(isFinite("lvyenet"));      // false

运行结果如下。

true
true
true
false
false
false

分析:

对于空字符串或包含空格的字符串,isFinite() 会将其转换为数字 0,然后再进行判断。而对于 "123",isFinite() 会将其转换为数字 123,然后再进行判断 .

对于包含非数字的字符串,会一律被视为非有限数,因此使用 isFinite() 判断都为 false。

isFinite() 与 Number.isFinite() 的区别

isFinite() 是一个全局函数,而 Number.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

分析:

对于 undefined 和 {} 来说,isFinite() 函数认为其为 Infinity,因此返回的是 false。而对于 []、""、true、false、null 等,isFinite() 函数会将其转化为对应的数字,然后再进行判断,因此返回的是 true。

示例 5:Number.isFinite() 不会导致怪异行为

console.log(Number.isFinite(NaN));             // true
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() 方法来判断某个值是否为 Infinity,则不会存在 isFinite() 函数的怪异行为。

上一篇: isNaN()

下一篇: eval()

给站长反馈

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

邮箱:lvyenet@vip.qq.com

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