上一週小編因為自己的事情,沒有持續更新,還望大家諒解,趁著今天醒得早,小編繼續和大家學(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
大家還可以掃描二維碼,關注我的微信公眾號,蝸牛全棧