您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關JavaScript中的Infinity怎么用,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
Infinity(無窮大)在 JS 中是一個特殊的數字,它的特性是:它比任何有限的數字都大,如果不知道 Infinity, 我們在一些運算操作遇到時,就會覺得很有意思。
現在我們來看看 JS 中的Infinity 屬性,了解用例并解決一些常見的陷阱。
1.Infinity(無窮)的定義
無窮可以分為兩種,正無窮和負無窮,JS 中對應的表示方式為:+Infinity(或者Infinity) 和 -Infinity。
這意味著Infinity和-Infinity(小于任何有限數的數字)都是number類型的特殊值:
typeof Infinity; // => 'number' typeof -Infinity; // => 'number'
Infinity 是全局對象的屬性:
window.Infinity; // => Infinity
另外,Number函數也有兩個屬性來表示正負無窮大:
Number.POSITIVE_INFINITY; // => Infinity
Number.NEGATIVE_INFINITY; // => -Infinity
2. Infinity 的特性
Infinity比任何有限數都大。
舉幾個例子 Look Look:
Infinity > 100; // => true
Infinity > Number.MAX_SAFE_INTEGER; // => true
Infinity > Number.MAX_VALUE; // => true
Infinity 在加法、乘法和除法等算術運算中用作操作數時會產生有趣的效果:
Infinity + 1; // => Infinity
Infinity + Infinity; // => InfinityInfinity * 2; // => Infinity
Infinity * Infinity; // => InfinityInfinity / 2; // => Infinity
一些Infinity 的運算得到有限的數:
10 / Infinity; // => 0
一個有限的數除以0得到 Infinity 結果:
2 / 0; // => Infinity
對無窮數進行概念上不正確的運算會得到NaN。 例如,不能除以無限數,也無法確定無限數是奇數還是偶數:
Infinity / Infinity; // => NaN
Infinity % 2; // => NaN
2.1 負無窮
負無窮小于任何有限數。
將-Infinity 與一些有限數字進行比較:
-Infinity < 100; // => true
-Infinity < -Number.MAX_SAFE_INTEGER; // => true
-Infinity < -Number.MAX_VALUE; // => true
同時,負無窮小于正無窮:
-Infinity < Infinity; // => true
當使用不同操作符操作數時,也可能會得到負無窮:
Infinity * -1; // => -Infinity
Infinity / -2; // => -Infinity
-2 / 0; // => -Infinity
3.判斷無窮
幸運的是,Infinity等于相同符號的Infinity:
Infinity === Infinity; // => true
-Infinity === -Infinity; // => true
但前面的符號不一樣就不相等,就也很好理解:
Infinity === -Infinity; // => false
JSt有一個特殊的函數Number.isFinite(value),用于檢查提供的值是否有限數:
Number.isFinite(Infinity); // => false
Number.isFinite(-Infinity); // => false
Number.isFinite(999); // => true
4. 無窮的的使用情況
當我們需要初始化涉及數字比較的計算時,無窮值就非常方便。例如,在數組中搜索最小值時:
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 的的一些坑
我們很可能不會經常使用Infinity值。 但是,值得知道何時會出現Infinity值。
5.1. 解析數據
假設 JS 使用一個輸入(POST請求、輸入字段的值等)來解析一個數字。在簡單的情況下,它會工作得很好:
parseFloat('10.5'); // => 10.5
parseFloat('ZZZ'); // => NaN
這里需要小心的,parseFloat()將'Infinity'字符串解析為實際的Infinity數:
parseFloat('Infinity'); // => Infinity
另一個是使用parseInt()來解析整數,它無法將'Infinity'識別為整數:
parseInt('10', 10); // => 10
parseInt('Infinity', 10); // => NaN
5.2 JSON 序列化
JSON.stringify()將Infinity數字序列化為null。
const worker = {
salary: Infinity
};JSON.stringify(worker); // => '{ "salary": null }'
salary 屬性值為Infinity但是當字符串化為JSON時,"salary"值將變為null。
5.3 最大數溢出
Number.MAX_VALUE是 JS 中最大的浮點數。
為了使用甚至大于Number.MAX_VALUE的數字,JS 將該數字轉換為Infinity:
2 * Number.MAX_VALUE; // => Infinity
Math.pow(10, 1000); // => Infinity
5.4 Math 函數
JS 中Math命名空間的某些函數可以返回Infinity:
const numbers = [1, 2]; const empty = []; Math.max(...numbers); // => 2 Math.max(...empty); // => -Infinity Math.min(...numbers); // => 1 Math.min(...empty); // => Infinity
在不帶參數的情況下調用Math.max()時,返回-Infinity,而Math.min()則相應地返回Infinity。 如果嘗試確定一個空數組的最大值或最小值,那結果后面人感到意外。
關于“JavaScript中的Infinity怎么用”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。