總結(jié)JavaScript中BigIn函數(shù)常見的屬性
一、概述
BigInt
是一種特殊的數(shù)字類型,它提供了對任意長度整數(shù)的支持。
創(chuàng)建 bigint
的方式有兩種:在一個整數(shù)字面量后面加 n 或者調(diào)用 BigInt
函數(shù),該函數(shù)從字符串、數(shù)字等中生成 bigint
。
const bigint = 1234567890123456789012345678901234567890n; const sameBigint = BigInt("1234567890123456789012345678901234567890"); const bigintFromNumber = BigInt(10); // 與 10n 相同
二、屬性
1. 數(shù)學運算符
BigInt
大多數(shù)情況下可以像常規(guī)數(shù)字類型一樣使用。
例如:
alert(1n + 2n); // 3 alert(5n / 2n); // 2
注:除法 5/2 的結(jié)果向零進行舍入,舍入后得到的結(jié)果沒有了小數(shù)部分。對 bigint
的所有操作,返回的結(jié)果也是 bigint。
不可以把 bigint
和常規(guī)數(shù)字類型混合使用:
alert(1n + 2); // Error: Cannot mix BigInt and other types
如果有需要,應該顯式地轉(zhuǎn)換它們:使用 BigInt()
或者 Number(),
像這樣:
let bigint = 1n; let number = 2; // 將 number 轉(zhuǎn)換為 bigint alert(bigint + BigInt(number)); // 3 // 將 bigint 轉(zhuǎn)換為 number alert(Number(bigint) + number); // 3
轉(zhuǎn)換操作始終是靜默的,絕不會報錯,但是如果 bigint 太大而數(shù)字類型無法容納,則會截斷多余的位,因此應該謹慎進行此類轉(zhuǎn)換。
BigInt
不支持一元加法
一元加法運算符 +value,是大家熟知的將 value 轉(zhuǎn)換成數(shù)字類型的方法。
為了避免混淆,在 bigint
中不支持一元加法:
let bigint = 1n; alert( +bigint ); // error
應該用 Number()
來將一個 bigint
轉(zhuǎn)換成一個數(shù)字類型。
2. 比較運算符
比較運算符,例如 < 和 >,使用它們來對 bigint
和 number
類型的數(shù)字進行比較沒有問題。
alert( 2n > 1n ); // true alert( 2n > 1 ); // true
注:由于 number
和 bigint
屬于不同類型,它們可能在進行 == 比較時相等,但在進行 ===(嚴格相等)比較時不相等:
alert( 1 == 1n ); // true alert( 1 === 1n ); // false
3. 布爾運算
當在 if 或其他布爾運算中時,bigint 的行為類似于 number。
例:在 if 中,bigint 0n 為 false,其他值為 true:
if (0n) { // 永遠不會執(zhí)行 }
布爾運算符
例如 ||,&& 和其他運算符,處理 bigint 的方式也類似于 number:
alert( 1n || 2 ); // 1(1n 被認為是 true) alert( 0n || 2 ); // 2(0n 被認為是 false)
注:這個方法建議在寫代碼時使用 JSBI
替代原生的 bigint
。但是 JSBI 在內(nèi)部像使用 bigint 一樣使用 number
,并最大程度按照規(guī)范進行模擬,所以代碼已經(jīng)是準備好轉(zhuǎn)換成 bigint
的了(bigint-ready)。
對于不支持 bigint
的引擎,可以“按原樣”使用此類 JSBI 代碼,對于那些支持 bigint 的引擎 — polyfill 會將調(diào)用轉(zhuǎn)換為原生的 bigint。
三、總結(jié)
本文基于JavaScript
基礎,介紹了 BigInt 函數(shù),常見的屬性,通過 BigInt 函數(shù)進行數(shù)字運算符的比較。布爾運算等等,通過按案例的分析進行詳細的講解。
到此這篇關于總結(jié)JavaScript中BigIn函數(shù)常見的屬性的文章就介紹到這了,更多相關JavaScript中BigIn函數(shù)常見的屬性內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
微信小程序 scroll-view實現(xiàn)上拉加載與下拉刷新的實例
這篇文章主要介紹了微信小程序 scroll-view實現(xiàn)上拉加載與下拉刷新的實例的相關資料,需要的朋友可以參考下2017-01-01微信小程序 網(wǎng)絡請求(post請求,get請求)
這篇文章主要介紹了微信小程序 網(wǎng)絡請求(post請求,get請求)的相關資料,需要的朋友可以參考下2017-01-01