ES11中的bigint


上一周小編因為自己的事情,沒有持續更新,還望大家諒解,趁着今天醒得早,小編繼續和大家學(si)習(ke)es11中的新語法。在js中,對整數類型的數據,存在着最大極限,這個極限就是

const max = 2**53 // js冪運算
console.log(max) // 9007199254740992

同樣,為了計算的准確性,js也定義了最大安全整數,這個整數是

console.log(Number.MAX_SAFE_INTEGER) // 9007199254740991

當我們的項目需要的數字很大的時候,會出現這樣的烏龍事件

const max = 2**53 // js冪運算
console.log(max === max+1) //  true
const num = 9007199254740993
console.log(num) // 9007199254740992

為了解決這樣的問題,es11中提出了一個新的基本類型,bigint。在使用的時候,可以有兩種方法。

一、直接添加字母n,就像這樣

const num = 9007199254740993n
console.log(num) // 9007199254740993n
console.log(typeof num)  // bigint

雖然是一種新的數據類型,但是有些“規矩”還是要遵守,比如

console.log(1n==1) // true 只要值相等,返回true
console.log(1n===1) // false 必須值和類型都相等,才返回false

二、小編理解的類似構造函數,就像這樣

const num = BigInt(9007199254740993n)
console.log(num) // 9007199254740993n

同樣,bigint類型也可以進行我們認知內的運算,就像這樣

const num1 = BigInt(9007199254740993n)
const num2 = BigInt(9007199254740993n)
console.log(num1+num2) // 18014398509481986n

數據范圍是擴大了,但是每次數字后面跟個n,看着總感覺怪怪的,為了達到視覺上的美感,我們可以將bigint轉為字符串數據類型,就像這樣

const num = BigInt(18014398509481986n)
console.log(num.toString()) // 18014398509481986

同樣,我們需要轉換成bigint的時候,通過BigInt再轉換一次就可以了

const str = '18014398509481986'
console.log(BigInt(str)) // 18014398509481986n

大家還可以掃描二維碼,關注我的微信公眾號,蝸牛全棧

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM