关于javascript:ES11中的bigint

44次阅读

共计 1138 个字符,预计需要花费 3 分钟才能阅读完成。

上一周小编因为本人的事件,没有继续更新,还望大家体谅,趁着明天醒得早,小编持续和大家学 (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

大家能够扫描二维码,关注我的微信公众号,蜗牛全栈

正文完
 0