這篇文章將為大家詳細(xì)講解有關(guān)JavaScript中的Infinity怎么用,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
創(chuàng)新互聯(lián)建站長(zhǎng)期為千余家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為平江企業(yè)提供專業(yè)的網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì),平江網(wǎng)站改版等技術(shù)服務(wù)。擁有十余年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。Infinity(無(wú)窮大)在 JS 中是一個(gè)特殊的數(shù)字,它的特性是:它比任何有限的數(shù)字都大,如果不知道 Infinity, 我們?cè)谝恍┻\(yùn)算操作遇到時(shí),就會(huì)覺得很有意思。
現(xiàn)在我們來(lái)看看 JS 中的Infinity 屬性,了解用例并解決一些常見的陷阱。
1.Infinity(無(wú)窮)的定義
無(wú)窮可以分為兩種,正無(wú)窮和負(fù)無(wú)窮,JS 中對(duì)應(yīng)的表示方式為:+Infinity(或者Infinity) 和 -Infinity。
這意味著Infinity和-Infinity(小于任何有限數(shù)的數(shù)字)都是number類型的特殊值:
typeof Infinity; // => 'number' typeof -Infinity; // => 'number'
Infinity 是全局對(duì)象的屬性:
window.Infinity; // => Infinity
另外,Number函數(shù)也有兩個(gè)屬性來(lái)表示正負(fù)無(wú)窮大:
Number.POSITIVE_INFINITY; // => Infinity
Number.NEGATIVE_INFINITY; // => -Infinity
2. Infinity 的特性
Infinity比任何有限數(shù)都大。
舉幾個(gè)例子 Look Look:
Infinity > 100; // => true
Infinity > Number.MAX_SAFE_INTEGER; // => true
Infinity > Number.MAX_VALUE; // => true
Infinity 在加法、乘法和除法等算術(shù)運(yùn)算中用作操作數(shù)時(shí)會(huì)產(chǎn)生有趣的效果:
Infinity + 1; // => Infinity
Infinity + Infinity; // => InfinityInfinity * 2; // => Infinity
Infinity * Infinity; // => InfinityInfinity / 2; // => Infinity
一些Infinity 的運(yùn)算得到有限的數(shù):
10 / Infinity; // => 0
一個(gè)有限的數(shù)除以0得到 Infinity 結(jié)果:
2 / 0; // => Infinity
對(duì)無(wú)窮數(shù)進(jìn)行概念上不正確的運(yùn)算會(huì)得到NaN。 例如,不能除以無(wú)限數(shù),也無(wú)法確定無(wú)限數(shù)是奇數(shù)還是偶數(shù):
Infinity / Infinity; // => NaN
Infinity % 2; // => NaN
2.1 負(fù)無(wú)窮
負(fù)無(wú)窮小于任何有限數(shù)。
將-Infinity 與一些有限數(shù)字進(jìn)行比較:
-Infinity < 100; // => true
-Infinity < -Number.MAX_SAFE_INTEGER; // => true
-Infinity < -Number.MAX_VALUE; // => true
同時(shí),負(fù)無(wú)窮小于正無(wú)窮:
-Infinity < Infinity; // => true
當(dāng)使用不同操作符操作數(shù)時(shí),也可能會(huì)得到負(fù)無(wú)窮:
Infinity * -1; // => -Infinity
Infinity / -2; // => -Infinity
-2 / 0; // => -Infinity
3.判斷無(wú)窮
幸運(yùn)的是,Infinity等于相同符號(hào)的Infinity:
Infinity === Infinity; // => true
-Infinity === -Infinity; // => true
但前面的符號(hào)不一樣就不相等,就也很好理解:
Infinity === -Infinity; // => false
JSt有一個(gè)特殊的函數(shù)Number.isFinite(value),用于檢查提供的值是否有限數(shù):
Number.isFinite(Infinity); // => false
Number.isFinite(-Infinity); // => false
Number.isFinite(999); // => true
4. 無(wú)窮的的使用情況
當(dāng)我們需要初始化涉及數(shù)字比較的計(jì)算時(shí),無(wú)窮值就非常方便。例如,在數(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()迭代中,最小值成為第一項(xiàng)。
5. Infinity 的的一些坑
我們很可能不會(huì)經(jīng)常使用Infinity值。 但是,值得知道何時(shí)會(huì)出現(xiàn)Infinity值。
5.1. 解析數(shù)據(jù)
假設(shè) JS 使用一個(gè)輸入(POST請(qǐng)求、輸入字段的值等)來(lái)解析一個(gè)數(shù)字。在簡(jiǎn)單的情況下,它會(huì)工作得很好:
parseFloat('10.5'); // => 10.5
parseFloat('ZZZ'); // => NaN
這里需要小心的,parseFloat()將'Infinity'字符串解析為實(shí)際的Infinity數(shù):
parseFloat('Infinity'); // => Infinity
另一個(gè)是使用parseInt()來(lái)解析整數(shù),它無(wú)法將'Infinity'識(shí)別為整數(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但是當(dāng)字符串化為JSON時(shí),"salary"值將變?yōu)閚ull。
5.3 大數(shù)溢出
Number.MAX_VALUE是 JS 中大的浮點(diǎn)數(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()時(shí),返回-Infinity,而Math.min()則相應(yīng)地返回Infinity。 如果嘗試確定一個(gè)空數(shù)組的大值或最小值,那結(jié)果后面人感到意外。
關(guān)于“JavaScript中的Infinity怎么用”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。