JavaScript isFinite() 语法
isFinite() 是 JavaScript 的一个全局函数,它用于判断某个值是否为有限数。与 Number.isFinite() 方法不同,isFinite() 函数会在判断前尝试将参数转换为一个数字。
语法:
isFinite(value)说明:
isFinite() 函数会尝试将 “非数字值” 转换为 “数字” 。这是它与更严格的 Number.isFinite() 方法的主要区别。
- 如果 value 是 NaN、Infinity 或 -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() 函数的怪异行为。
