溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

JavaScript中的Infinity怎么用

發(fā)布時間:2021-06-10 10:06:17 來源:億速云 閱讀:443 作者:小新 欄目:web開發(fā)

這篇文章將為大家詳細講解有關(guān)JavaScript中的Infinity怎么用,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

Infinity(無窮大)在 JS 中是一個特殊的數(shù)字,它的特性是:它比任何有限的數(shù)字都大,如果不知道 Infinity, 我們在一些運算操作遇到時,就會覺得很有意思。

現(xiàn)在我們來看看 JS 中的Infinity 屬性,了解用例并解決一些常見的陷阱。

1.Infinity(無窮)的定義

無窮可以分為兩種,正無窮和負無窮,JS 中對應(yīng)的表示方式為:+Infinity(或者Infinity) 和 -Infinity。

這意味著Infinity和-Infinity(小于任何有限數(shù)的數(shù)字)都是number類型的特殊值:

typeof Infinity; // => 'number'
typeof -Infinity; // => 'number'

Infinity 是全局對象的屬性:

window.Infinity; // => Infinity

另外,Number函數(shù)也有兩個屬性來表示正負無窮大:

Number.POSITIVE_INFINITY; // => Infinity
Number.NEGATIVE_INFINITY; // => -Infinity

2. Infinity 的特性

Infinity比任何有限數(shù)都大。

舉幾個例子 Look Look:

Infinity > 100;                     // => true
Infinity > Number.MAX_SAFE_INTEGER; // => true
Infinity > Number.MAX_VALUE;        // => true

Infinity 在加法、乘法和除法等算術(shù)運算中用作操作數(shù)時會產(chǎn)生有趣的效果:

Infinity + 1;        // => Infinity
Infinity + Infinity; // => Infinity

Infinity * 2;        // => Infinity
Infinity * Infinity; // => Infinity

Infinity / 2;        // => Infinity

一些Infinity 的運算得到有限的數(shù):

10 / Infinity; // => 0

一個有限的數(shù)除以0得到 Infinity 結(jié)果:

2 / 0; // => Infinity

對無窮數(shù)進行概念上不正確的運算會得到NaN。 例如,不能除以無限數(shù),也無法確定無限數(shù)是奇數(shù)還是偶數(shù):

Infinity / Infinity; // => NaN
Infinity % 2;        // => NaN

2.1 負無窮

負無窮小于任何有限數(shù)。

將-Infinity 與一些有限數(shù)字進行比較:

-Infinity < 100;                      // => true
-Infinity < -Number.MAX_SAFE_INTEGER; // => true
-Infinity < -Number.MAX_VALUE;        // => true

同時,負無窮小于正無窮:

-Infinity < Infinity; // => true

當使用不同操作符操作數(shù)時,也可能會得到負無窮:

Infinity * -1; // => -Infinity
Infinity / -2; // => -Infinity
-2 / 0;        // => -Infinity

3.判斷無窮

幸運的是,Infinity等于相同符號的Infinity:

Infinity === Infinity; // => true
-Infinity === -Infinity; // => true

但前面的符號不一樣就不相等,就也很好理解:

Infinity === -Infinity; // => false

JSt有一個特殊的函數(shù)Number.isFinite(value),用于檢查提供的值是否有限數(shù):

Number.isFinite(Infinity);  // => false
Number.isFinite(-Infinity); // => false
Number.isFinite(999);       // => true

4. 無窮的的使用情況
當我們需要初始化涉及數(shù)字比較的計算時,無窮值就非常方便。例如,在數(shù)組中搜索最小值時:

function findMin(array) {
  let min = Infinity;
  for (const item of array) {
    min = Math.min(min, item);
  }
  return min;
}

findMin([5, 2, 1, 4]); // => 1

min變量使用Infinity初始化。 在第一次for()迭代中,最小值成為第一項。

5. Infinity 的的一些坑

我們很可能不會經(jīng)常使用Infinity值。 但是,值得知道何時會出現(xiàn)Infinity值。

5.1. 解析數(shù)據(jù)

假設(shè) JS 使用一個輸入(POST請求、輸入字段的值等)來解析一個數(shù)字。在簡單的情況下,它會工作得很好:

parseFloat('10.5'); // => 10.5

parseFloat('ZZZ'); // => NaN

這里需要小心的,parseFloat()將'Infinity'字符串解析為實際的Infinity數(shù):

parseFloat('Infinity'); // => Infinity

另一個是使用parseInt()來解析整數(shù),它無法將'Infinity'識別為整數(shù):

parseInt('10', 10); // => 10

parseInt('Infinity', 10); // => NaN

5.2 JSON 序列化

JSON.stringify()將Infinity數(shù)字序列化為null。

const worker = {
 salary: Infinity
};

JSON.stringify(worker); // => '{ "salary": null }'

salary 屬性值為Infinity但是當字符串化為JSON時,"salary"值將變?yōu)閚ull。

5.3 最大數(shù)溢出

Number.MAX_VALUE是 JS 中最大的浮點數(shù)。

為了使用甚至大于Number.MAX_VALUE的數(shù)字,JS 將該數(shù)字轉(zhuǎn)換為Infinity:

2 * Number.MAX_VALUE; // => Infinity
Math.pow(10, 1000);   // => Infinity

5.4 Math 函數(shù)

JS 中Math命名空間的某些函數(shù)可以返回Infinity:

const numbers = [1, 2];
const empty = [];

Math.max(...numbers); // => 2
Math.max(...empty);  // => -Infinity

Math.min(...numbers); // => 1
Math.min(...empty);  // => Infinity

在不帶參數(shù)的情況下調(diào)用Math.max()時,返回-Infinity,而Math.min()則相應(yīng)地返回Infinity。 如果嘗試確定一個空數(shù)組的最大值或最小值,那結(jié)果后面人感到意外。

關(guān)于“JavaScript中的Infinity怎么用”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI