<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          盤點(diǎn)JavaScript中BigIn函數(shù)常見的屬性

          共 2159字,需瀏覽 5分鐘

           ·

          2021-10-14 21:44

          點(diǎn)擊上方“前端進(jìn)階學(xué)習(xí)交流”,進(jìn)行關(guān)注

          回復(fù)“前端”即可獲贈(zèng)前端相關(guān)學(xué)習(xí)資料

          四海翻騰云水路,五洲震蕩風(fēng)雷激。

          大家好,我是進(jìn)階學(xué)習(xí)者。

          一、概述

          BigInt 是一種特殊的數(shù)字類型,它提供了對(duì)任意長(zhǎng)度整數(shù)的支持。

          創(chuàng)建 bigint 的方式有兩種:在一個(gè)整數(shù)字面量后面加 n 或者調(diào)用 BigInt 函數(shù),該函數(shù)從字符串、數(shù)字等中生成 bigint。

          const bigint = 1234567890123456789012345678901234567890n;const sameBigint = BigInt("1234567890123456789012345678901234567890");const bigintFromNumber = BigInt(10); // 與 10n 相同


          二、屬性

          1. 數(shù)學(xué)運(yùn)算符

          BigInt 大多數(shù)情況下可以像常規(guī)數(shù)字類型一樣使用。

          例如:

          alert(1n + 2n); // 3alert(5n / 2n); // 2

          注:

          除法 5/2 的結(jié)果向零進(jìn)行舍入,舍入后得到的結(jié)果沒有了小數(shù)部分。對(duì) bigint 的所有操作,返回的結(jié)果也是 bigint。

          不可以把 bigint 和常規(guī)數(shù)字類型混合使用:

          alert(1n + 2); // Error: Cannot mix BigInt and other types

          如果有需要,應(yīng)該顯式地轉(zhuǎn)換它們:使用 BigInt() 或者 Number(),像這樣:

          let bigint = 1n;let number = 2;// 將 number 轉(zhuǎn)換為 bigintalert(bigint + BigInt(number)); // 3// 將 bigint 轉(zhuǎn)換為 numberalert(Number(bigint) + number); // 3

          轉(zhuǎn)換操作始終是靜默的,絕不會(huì)報(bào)錯(cuò),但是如果 bigint 太大而數(shù)字類型無法容納,則會(huì)截?cái)喽嘤嗟奈唬虼藨?yīng)該謹(jǐn)慎進(jìn)行此類轉(zhuǎn)換。

          BigInt 不支持一元加法

          一元加法運(yùn)算符 +value,是大家熟知的將 value 轉(zhuǎn)換成數(shù)字類型的方法。

          為了避免混淆,在 bigint 中不支持一元加法:

          let bigint = 1n;alert( +bigint ); // error

          應(yīng)該用 Number() 來將一個(gè) bigint 轉(zhuǎn)換成一個(gè)數(shù)字類型。

          2. 比較運(yùn)算符

          比較運(yùn)算符,例如 < 和 >,使用它們來對(duì) bigint 和 number 類型的數(shù)字進(jìn)行比較沒有問題。

          alert( 2n > 1n ); // truealert( 2n > 1 ); // true

          注:

          由于 number 和 bigint 屬于不同類型,它們可能在進(jìn)行 == 比較時(shí)相等,但在進(jìn)行 ===(嚴(yán)格相等)比較時(shí)不相等:

          alert( 1 == 1n ); // true
          alert( 1 === 1n ); // false

          3. 布爾運(yùn)算

          當(dāng)在 if 或其他布爾運(yùn)算中時(shí),bigint 的行為類似于 number。

          例:

          在 if 中,bigint 0n 為 false,其他值為 true:

          if (0n) {    // 永遠(yuǎn)不會(huì)執(zhí)行}

          布爾運(yùn)算符

          例如 ||,&& 和其他運(yùn)算符,處理 bigint 的方式也類似于 number:

          alert( 1n || 2 ); // 11n 被認(rèn)為是 truealert( 0n || 2 ); // 2(0n 被認(rèn)為是 false

          注:

          這個(gè)方法建議在寫代碼時(shí)使用 JSBI 替代原生的 bigint。但是 JSBI 在內(nèi)部像使用 bigint 一樣使用 number,并最大程度按照規(guī)范進(jìn)行模擬,所以代碼已經(jīng)是準(zhǔn)備好轉(zhuǎn)換成 bigint 的了(bigint-ready)。

          對(duì)于不支持 bigint 的引擎,可以“按原樣”使用此類 JSBI 代碼,對(duì)于那些支持 bigint 的引擎 — polyfill 會(huì)將調(diào)用轉(zhuǎn)換為原生的 bigint。


          三、總結(jié)

          本文基于JavaScript基礎(chǔ),介紹了 BigInt 函數(shù),常見的屬性,通過 BigInt 函數(shù)進(jìn)行數(shù)字運(yùn)算符的比較。布爾運(yùn)算等等,通過按案例的分析進(jìn)行詳細(xì)的講解。

          歡迎大家積極嘗試,有時(shí)候看到別人實(shí)現(xiàn)起來很簡(jiǎn)單,但是到自己動(dòng)手實(shí)現(xiàn)的時(shí)候,總會(huì)有各種各樣的問題,切勿眼高手低,勤動(dòng)手,才可以理解的更加深刻。

          代碼很簡(jiǎn)單,希望對(duì)你學(xué)習(xí)有幫助。

          -------------------?End?-------------------

          往期精彩文章推薦:

          歡迎大家點(diǎn)贊,留言,轉(zhuǎn)發(fā),轉(zhuǎn)載,感謝大家的相伴與支持

          想加入前端學(xué)習(xí)群請(qǐng)?jiān)诤笈_(tái)回復(fù)【入群

          萬水千山總是情,點(diǎn)個(gè)【在看】行不行

          瀏覽 42
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  欧美色图888 | 樱桃码一区二区三区 | 操屄操屄操屄操屄 | 又色又爽大香焦 | 九九色在线播放 |