摘要: 在本教程中,您将了解 JavaScript 无穷大和其特性。
JavaScript 无穷大简介
Infinity
是 全局对象 的一个属性。换句话说,它是一个全局变量。
Infinity
的初始值为 Number.POSITIVE_INFINITY
,它大于其他有限数字。
JavaScript 还具有一个负的 Infinity
(-Infinity
),其值为 Number.NEGATIVE_INFINITY
。-Infinity
小于任何有限数字。
Infinity
的类型是 number
const result = typeof (Infinity);
console.log(result); // number
Code 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)); // false
Code language: JavaScript (javascript)
您还可以像这样将一个值与 Infinity
进行比较
let counter = 100;
console.log(counter === Infinity); // false
Code language: JavaScript (javascript)
一个无限数字等于另一个无限数字
console.log(Infinity === Infinity); // true
Code language: JavaScript (javascript)
无穷大的陷阱
1) parseFloat() 函数
假设您有一个收集用户信息的表单。在表单上,您有一个允许用户输入他们体重的字段。
由于表单字段的值是字符串,因此您需要将其转换为数字
let weight = parseInt('120kg');
console.log(weight); // 120
Code language: JavaScript (javascript)
这工作正常。如果用户输入无法转换为数字的字符串,则 parseInt()
返回一个 NaN
let weight = parseInt('More than 100kg');
console.log(weight); // NaN
Code language: JavaScript (javascript)
如果输入字符串是 Infinity
,则 parseInt()
也返回 NaN
,因为它不识别无穷大数字
let weight = parseInt('Infinity');
console.log(weight); // NaN
Code language: JavaScript (javascript)
但是,如果您使用 parseFloat()
函数,就像这样
let weight = parseFloat('Infinity');
console.log(weight); // Infinity
Code 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); // 1
Code 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); // Infinity
Code language: JavaScript (javascript)
总结
Infinity
代表一个无限数字。它是一个全局变量,其值为Infinity
。Infinity
大于任何有限数字,而-Infinity
小于任何有限数字。parseFloat('Infinity')
返回Infinity
。