最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript 中的無(wú)窮數(shù)(Infinity)詳解

 更新時(shí)間:2020年02月13日 08:43:29   作者:前端小智  
這篇文章主要介紹了JavaScript 中的無(wú)窮數(shù)(Infinity)的相關(guān)資料,非常的細(xì)致全面,有需要的小伙伴可以參考下

為了保證的可讀性,本文采用意譯而非直譯。

Infinity(無(wú)窮大)在 JS 中是一個(gè)特殊的數(shù)字,它的特性是:它比任何有限的數(shù)字都大,如果不知道 Infinity, 我們?cè)谝恍┻\(yùn)算操作遇到時(shí),就會(huì)覺(jué)得很有意思。

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

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; // => Infinity

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

Infinity / 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é)果后面人感到意外。

總結(jié)

JS中的Infinity表示無(wú)窮數(shù)的概念。 任何有限數(shù)均小于Infinity,而任何有限數(shù)均大于-Infinity。

比較 JS 中的無(wú)窮值很容易:Infinity === Infinity 為 true。特殊的函數(shù)Number.isFinite()確定提供的參數(shù)是否是一個(gè)有限的數(shù)字。

在涉及數(shù)字比較的算法時(shí),可以使用Infinite初始化變量,用例是尋找數(shù)組的最小值。

解析來(lái)自輸入的數(shù)字時(shí),必須小心Infinity:Number('Infinity'),parseFloat('Infinity')返回實(shí)際的Infinity。 當(dāng)使用JSON.stringify()序列化時(shí),Infinity變?yōu)閚ull。

原文:https://dmitripavlutin.com/infinity-in-javascript/

相關(guān)文章

  • 讓我們一起來(lái)學(xué)習(xí)一下什么是javascript的閉包

    讓我們一起來(lái)學(xué)習(xí)一下什么是javascript的閉包

    這篇文章主要為大家詳細(xì)介紹了javascript的閉包,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-01-01
  • js實(shí)現(xiàn)圖片局部放大效果詳解

    js實(shí)現(xiàn)圖片局部放大效果詳解

    這篇文章主要介紹了js實(shí)現(xiàn)圖片局部放大效果,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • js導(dǎo)航菜單(自寫)簡(jiǎn)單大方

    js導(dǎo)航菜單(自寫)簡(jiǎn)單大方

    一個(gè)簡(jiǎn)單的多級(jí)下拉菜單菜單但是由于業(yè)務(wù)和樣式上的要求,為了簡(jiǎn)潔找了好多都不適合于是自己寫了一個(gè),曬出來(lái)與大家分享,感興趣的朋友可以參考下哈,希望可以幫助到你
    2013-03-03
  • IE6瀏覽器下resize事件被執(zhí)行了多次解決方法

    IE6瀏覽器下resize事件被執(zhí)行了多次解決方法

    在IE瀏覽器下,一次resize事件被執(zhí)行了多次,這是IE6和IE7的一個(gè)比較廣為認(rèn)知的問(wèn)題,這個(gè)問(wèn)題在這兩個(gè)版本的瀏覽器中表現(xiàn)有所不同,通常IE6下會(huì)比IE7下更為糟糕,接下來(lái)將介紹解決方法,需要的朋友可以參考下
    2012-12-12
  • 簡(jiǎn)單了解常用的JavaScript 庫(kù)

    簡(jiǎn)單了解常用的JavaScript 庫(kù)

    這篇文章主要介紹了JavaScript 庫(kù)的相關(guān)資料,文中講解非常細(xì)致,幫助大家更好的理解和學(xué)習(xí)JavaScript,感興趣的朋友可以了解下
    2020-07-07
  • Javascript基礎(chǔ)回顧之(二) js作用域

    Javascript基礎(chǔ)回顧之(二) js作用域

    本篇是你必須知道的Javascript系列第二篇,我們主要來(lái)看看Javascript中變量作用域的問(wèn)題,需要的朋友可以參考下
    2017-01-01
  • javascript瀏覽器兼容教程之事件處理

    javascript瀏覽器兼容教程之事件處理

    如果在使用javascript的時(shí)候涉及到event處理,就需要知道event在不同的瀏覽器中的差異,主要的JavaScript的事件模型有三種(參考《Supporting Three Event Models at Once》),它們分別是NN4、IE4+和W3C/Safar。
    2014-06-06
  • 詳解Js里的for…in和for…of的用法

    詳解Js里的for…in和for…of的用法

    這篇文章主要介紹了Js里的for…in和for…of的用法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • JavaScript入門之語(yǔ)言基礎(chǔ)

    JavaScript入門之語(yǔ)言基礎(chǔ)

    本文通過(guò)全面列舉基礎(chǔ)的JavaScript概念這一方式來(lái)闡述該語(yǔ)言的基本原理,以此來(lái)為初學(xué)者提供一個(gè)對(duì)語(yǔ)言的基本了解,隨處可見(jiàn)的代碼例子則是用來(lái)說(shuō)明所有的這些概念是如何在語(yǔ)言中體現(xiàn)出來(lái)的
    2011-10-10
  • JS、CSS加載中的小問(wèn)題探討

    JS、CSS加載中的小問(wèn)題探討

    JS,CSS加載中的一些小問(wèn)題,或許大家早已把它遺忘,下面和大家一起重溫下,感興趣的朋友可以不要錯(cuò)過(guò)
    2013-11-11

最新評(píng)論

陇南市| 盐亭县| 辉南县| 汤阴县| 县级市| 蒲江县| 天门市| 宿州市| 达拉特旗| 岱山县| 二连浩特市| 丽水市| 九江市| 交口县| 平利县| 驻马店市| 确山县| 沾益县| 双牌县| 江山市| 左贡县| 临海市| 镇远县| 辽阳市| 苍梧县| 方正县| 文昌市| 达尔| 杂多县| 麟游县| 溧阳市| 玉林市| 集安市| 嘉禾县| 阿瓦提县| 巩义市| 襄汾县| 漳平市| 西畴县| 泰和县| 雷州市|