JavaScript 无穷大

摘要: 在本教程中,您将了解 JavaScript 无穷大和其特性。

JavaScript 无穷大简介

Infinity全局对象 的一个属性。换句话说,它是一个全局变量。

Infinity 的初始值为 Number.POSITIVE_INFINITY,它大于其他有限数字。

JavaScript 还具有一个负的 Infinity (-Infinity),其值为 Number.NEGATIVE_INFINITY-Infinity 小于任何有限数字。

Infinity 的类型是 number

const result = typeof (Infinity);

console.log(result); // numberCode language: JavaScript (javascript)

检查无穷大

JavaScript 提供了 Number.isFinite() 来检查一个值是否为有限值。

Number.isFinite(value);Code language: JavaScript (javascript)

如果 value 是有限的,它返回 true;如果 value 是无限的,则 Number.isFinite() 返回 false

console.log(Number.isFinite(100)); // true
console.log(Number.isFinite(Infinity)); // false
console.log(Number.isFinite(-Infinity)); // falseCode language: JavaScript (javascript)

您还可以像这样将一个值与 Infinity 进行比较

let counter = 100;
console.log(counter === Infinity); // falseCode language: JavaScript (javascript)

一个无限数字等于另一个无限数字

console.log(Infinity === Infinity); // trueCode language: JavaScript (javascript)

无穷大的陷阱

1) parseFloat() 函数

假设您有一个收集用户信息的表单。在表单上,您有一个允许用户输入他们体重的字段。

由于表单字段的值是字符串,因此您需要将其转换为数字

let weight = parseInt('120kg');
console.log(weight); // 120Code language: JavaScript (javascript)

这工作正常。如果用户输入无法转换为数字的字符串,则 parseInt() 返回一个 NaN

let weight = parseInt('More than 100kg');
console.log(weight); // NaNCode language: JavaScript (javascript)

如果输入字符串是 Infinity,则 parseInt() 也返回 NaN,因为它不识别无穷大数字

let weight = parseInt('Infinity');
console.log(weight); // NaNCode language: JavaScript (javascript)

但是,如果您使用 parseFloat() 函数,就像这样

let weight = parseFloat('Infinity');
console.log(weight); // InfinityCode language: JavaScript (javascript)

parseFloat() 函数识别 Infinity 并返回一个无限数字。

因此,当输入字段具有 'Infinity' 字符串时,最好发出验证错误。

2) JSON 序列化

JSON.stringify() 将无限数字序列化为 null。例如

const resource = {
    amount: Infinity
};
let result = JSON.stringify(resource);

console.log(result);Code language: JavaScript (javascript)

输出

{"amount":null}Code language: JSON / JSON with Comments (json)

3) 数学方法

一些数学函数返回无限数字。

以下 Math.min() 方法返回 ratings 数组中的最小数字

let ratings = [1, 2, 3, 4, 5];

let max = Math.min(...ratings);
console.log(max); // 1Code language: JavaScript (javascript)

但是,当 ratings 数组为空时,Math.min() 方法返回 Infinity

let ratings = [1, 2, 3, 4, 5];

// 
somewhere in the code 
ratings = []; // empty array
//

let max = Math.min(...ratings);
console.log(max); // InfinityCode language: JavaScript (javascript)

总结

  • Infinity 代表一个无限数字。它是一个全局变量,其值为 Infinity
  • Infinity 大于任何有限数字,而 -Infinity 小于任何有限数字。
  • parseFloat('Infinity') 返回 Infinity
本教程对您有帮助吗?