JavaScript Infinity属性
在JavaScript中,Infinity是一个具有有趣特性的特殊数字:大于任何有限的数字。当我们在条件语句和算术运算中使用无限数字时,我们可能会感到惊讶。在不事先了解Infinity的特性的情况下,这种操作是有效的。
让我们来看一下JavaScript中Infinity的特性,了解其用例,并避免常见陷阱。
正无穷和负无穷是另外两个特殊值。请注意,程序表达式”+Infinity”(Infinity)和”-Infinity”会产生这两个无限的Number值。
正无穷
该数字是Infinity的初始值。正无穷大于任何其他有限数字。
它与数学上的无穷大有以下不同之处。
- 如果我们将正值除以正无穷,我们得到正0。
- 如果我们将任何负值除以正无穷,我们得到负0。
- 0乘以正无穷等于NaN。
- NaN乘以正无穷等于NaN。
- 如果我们开始将正无穷除以负值,我们得到负无穷(除了负无穷)
- 如果我们开始将正无穷除以正整数,我们得到正无穷(除了正无穷)
- 正无穷除以正无穷(无论是负无穷还是正无穷)等于NaN。
语法
以下示例显示了POSITIVE INFINITY方法。
Number.POSITIVE_INFINITY
示例
以下示例显示了正无穷方法。我们可以使用正数和返回值。
<!DOCTYPE html>
<html>
<body>
<h3> JavaScript Global Properties </h3>
<h2> The Positive Infinity Property </h2>
<p id = "demo1"></p>
<p id = "demo2"></p>
<p id = "demo3"></p>
<p id = "demo4"></p>
<script>
function checkValue(bigValue) {
if (bigValue === Number.POSITIVE_INFINITY) {
return 'Process number as negative Infinity';
}
return bigValue;
}
document.getElementById("demo2").innerHTML = checkValue(Number.MAX_VALUE);
document.getElementById("demo3").innerHTML =
checkValue(Number.MAX_VALUE * 3);
document.getElementById("demo1").innerHTML = Number. POSITIVE_INFINITY;
const result_data = typeof(Infinity);
document.getElementById("demo4").innerHTML = result_data;
</script>
</body>
</html>
输出
该图像显示了简单无限信息作为输出。
负无穷大
在JavaScript中,还存在一个负无穷大(-Infinity),它具有值为Number.NEGATIVE_INFINITY的特性。-Infinity小于任何有限数。
从以下几个方面,它与数学中的无穷大不同:
- 当与任何其他数相除时,负无穷大会得到-0(与0不同)。
- 将负无穷大除以自身或正无穷大,会返回NaN。
- 当将负无穷大除以正数(除了正无穷大)时,结果为负无穷大。
- 负无穷大乘以任何负数(除了负无穷大)都等于正无穷大。
- 如果将负无穷大乘以NaN,结果是NaN。
- NaN是0和负无穷大的结果。
- 两个负等式的和总是等于正无穷大。
- 正无穷大总是正负无穷大的乘积。
语法
以下示例展示了NEGATIVE INFINITY方法。
Number.NEGATIVE _INFINITY
示例
以下示例展示了NEGATIVE INFINITY方法。
<!DOCTYPE html>
<html>
<body>
<h3> JavaScript Global Properties </h3>
<h2> The Negative Infinity Property </h2>
<p id = "demo1"></p>
<p id = "demo2"></p>
<p id = "demo3"></p>
<p id = "demo4"></p>
<script>
function checkValue(bigValue) {
if (bigValue == Number.NEGATIVE_INFINITY) {
return 'Process number as negative Infinity';
}
return bigValue;
}
document.getElementById("demo2").innerHTML = checkValue(-Number.MAX_VALUE);
document.getElementById("demo3").innerHTML =
checkValue(-Number.MAX_VALUE * 3);
document.getElementById("demo1").innerHTML = Number.NEGATIVE_INFINITY;
const result_data = typeof (-Infinity);
document.getElementById("demo4").innerHTML = result_data;
</script>
</body>
</html>
输出
此图像显示输出为负无穷大的信息。
检查是否为无穷大
Number.isFinite()方法用于检查传入的数字是否为有限数。它不是正无穷大、负无穷大或者不是一个数字。
语法
下面的语法展示了一个无穷大的值。
Number.isFinite(value);
参数
- 将被检查是否为有限数的值。
返回值
- 如果输入值是有限数,则返回布尔值 true。否则,返回 false。
示例
以下示例显示了 INFINITY 方法。
<!DOCTYPE html>
<html>
<body>
<h3> JavaScript Global Properties </h3>
<h2> The Infinity Property </h2>
<p id = "demo1"></p>
<p id = "demo2"></p>
<p id = "demo3"></p>
<p id = "demo4"></p>
<script>
document.getElementById("demo2").innerHTML = Number.isFinite(150);
document.getElementById("demo3").innerHTML =
Number.isFinite(Infinity);
document.getElementById("demo1").innerHTML = Number.isFinite(-Infinity);
document.getElementById("demo4").innerHTML = Number.isFinite(-150);
</script>
</body>
</html>
输出
该图片显示了负面和正面信息作为输出。
什么时候应该使用无穷大
无穷大的值在涉及数字比较的计算中很有用。
例如,在查找数组中的最小值时,我们可以用无穷大初始化最小变量。
function findMinvalue(array_var) {
let min_val = Infinity;
for (const key of array_var) {
min_val = Math.min(min_val, key);
}
return min_val;
}
findMinvalue([4, 8, 7, 1, 6, 2]);
因为每个有限值都小于无穷大,所以最小值将成为第一次for()迭代的第一个项目。
无穷大的陷阱
我们很少会处理无穷大的值。然而,了解无限属性可能出现的时机是很重要的。
有多种方法可以获得无穷大的值。
- 解析数字
- JSON序列化
- 最大数溢出
- 数学函数
解析数字
假设我们有一个从用户那里收集信息的表单。我们有一个表单上的字段,用户可以在其中输入他们的input_val。
- 因为表单字段的值是一个字符串,我们必须将其转换为数字:
let input_val = parseInt('243');
console.log(input_val); // 120
- 这完美运作。如果输入的字符串无法转换为数字,parseInt()将返回NaN:
let input_val = parseInt('Bigger than 243');
console.log(input_val); // NaN
- 如果输入字符串是无穷大(Infinity),parseInt() 返回 NaN,因为无穷大数字是无法识别的:
let input_val = parseInt('Infinity');
console.log(input_val); // NaN
语法
以下语法应用 parseFloat() 函数。
let input_val = parseFloat('Infinity');
console.log(input_val); // Infinity
parseFloat()函数可以识别Infinity,它会返回一个无穷大的数。当输入字段包含字符串”Infinity”时,最好生成一个验证错误。
示例
下面的示例展示了parseFloat()函数的使用。我们可以使用正无穷和负无穷的数据。函数使用parseFloat()函数返回有限和无限值。
<!DOCTYPE html>
<html>
<body>
<h3> JavaScript Global Properties </h3>
<h4> The parseFloat() Function </h4>
<p id = "demo1"></p>
<p id = "demo2"></p>
<p id = "demo3"></p>
<p id = "demo4"></p>
<script>
//infinity value
let input_val = parseFloat('Infinity');
//infinity value
let input_val1 = parseFloat(40018**7615);
//negative infinity value
let input_val3 = parseFloat('-Infinity');
//finite value
let input_val4 = parseFloat(40018**21);
document.getElementById("demo1").innerHTML =
input_val;
document.getElementById("demo2").innerHTML =
input_val1;
document.getElementById("demo3").innerHTML =
input_val3;
document.getElementById("demo4").innerHTML =
input_val4;
</script>
</body>
</html>
输出
图片显示了以输出形式呈现的所有类型的无限信息。
JSON序列化
JSON.stringify()将无穷大的数字转换为null值。
语法
以下语法显示了JSON序列化方法。
<script>
const student= {
rate: Infinity
};
JSON.stringify(student); // => '{ "rate": null }'
</script>
- 无限性是rate属性。然而,当转换为JSON时,“rate”值变为空。
示例
下面的示例显示了JSON序列化方法。
<!DOCTYPE html>
<html>
<body>
<h3> JavaScript Global Properties </h3>
<h4> The JSON Serialization Property </h4>
<p id = "demo1"></p>
<p id = "demo2"></p>
<p id = "demo3"></p>
<script>
//infinity value
const student= {
rate: Infinity
};
var data_val = JSON.stringify(student);
//finite value
const student1= {
mark: 80
};
var data_val1 = JSON.stringify(student1);
//both finite and Infinity value
const student2= {
name: "JavaTpoint",
number:2,
mark: Infinity
};
var data_val2 = JSON.stringify(student2);
document.getElementById("demo1").innerHTML =
data_val;
document.getElementById("demo2").innerHTML =
data_val1;
document.getElementById("demo3").innerHTML =
data_val2;
</script>
</body>
</html>
输出
图像显示了无穷大值作为输出。
最大数字溢出
MAX VALUE是JavaScript的最大浮点数。当尝试使用一个大于MAX_VALUE的数字时,JavaScript会将其转换为Infinity。我们可以进行指数、乘法等数学运算。
语法
以下语法显示了最大数字溢出的方法。
<script>
let input_val = input_value * Number.MAX_VALUE;
let input_val4 = Math.pow(base_value, ex_value);
</script>
示例
下面的示例展示了最大数溢出的方法。
<!DOCTYPE html>
<html>
<body>
<h3> JavaScript Global Properties </h3>
<h4> Maximum number overflows </h4>
<p id = "demo1"></p>
<p id = "demo2"></p>
<p id = "demo3"></p>
<p id = "demo4"></p>
<script>
//infinity value
let input_val = 3 * Number.MAX_VALUE;
//negative infinity value
let input_val1 = Math.pow(-418, 2501);
//negative infinity value
let input_val3 = -3 * Number.MAX_VALUE;
//finite value
let input_val4 = Math.pow(418, 2501);
document.getElementById("demo1").innerHTML =
input_val;
document.getElementById("demo2").innerHTML =
input_val1;
document.getElementById("demo3").innerHTML =
input_val3;
document.getElementById("demo4").innerHTML =
input_val4;
</script>
</body>
</html>
输出
该图像显示了所有类型的无限信息作为输出。
数学运算
在JavaScript中,Math命名空间中的一些函数可以返回无限大的数。
当一个函数没有任何参数时,Math.max()返回”-Infinity”,Math.min()返回”Infinity”。如果JavaScript尝试在空数组中查找最大值或最小值,我们可能会感到惊讶。
语法
下面的语法显示了无穷大属性的数学运算。
<script>
const array_var = [values];
Math.max(?array_var);
Math.min(?array_var);
</script>
示例
以下示例使用数学运算来表达无限性属性。
<!DOCTYPE html>
<html>
<body>
<h3> JavaScript Global Properties </h3>
<h4> Mathematical operations </h4>
<p id = "demo1"></p>
<p id = "demo2"></p>
<p id = "demo3"></p>
<p id = "demo4"></p>
<script>
//finite value
const array_var1 = [4, 1, 3, 2, 7];
var input_val1 = Math.max(...array_var1);
var input_val2 = Math.min(...array_var1);
const array_var2 = [];
//negative infinity value
var input_val3 = Math.max(...array_var2);
//infinity value
var input_val4 = Math.min(...array_var2);
document.getElementById("demo1").innerHTML =
input_val1;
document.getElementById("demo2").innerHTML =
input_val2;
document.getElementById("demo3").innerHTML =
input_val3;
document.getElementById("demo4").innerHTML =
input_val4;
</script>
</body>
</html>
输出
图像显示了各种类型的无限信息作为输出。
最重要的要点
- 在JavaScript中,Infinity表示无限大的概念。任何有限的数都小于Infinity,而没有有限的数大于-Infinity。
- 在JavaScript中,比较无限值很简单:
Infinity === True Infinity
。Number.isFinite()确定供给的参数是否是有限数。 - 在启动需要数值比较的算法时,我们可以使用Infinity来初始化变量。确定数组的最小值是使用示例之一。
- 在从输入中解析数值时,必须谨慎使用Infinity:通过number (‘Infinity’)、parseFloat(‘Infinity’)返回实际的Infinity数。使用JSON.stringify()序列化的无限数为null。
结论
在JavaScript中,无限大数或数据处理用于数学运算和大型数据。对于用户和开发人员来说,使用无限大数或数据处理是一种简单而实用的方法。