前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >深入了解 BigInt

深入了解 BigInt

作者头像
公众号---人生代码
发布2021-04-01 11:27:33
8470
发布2021-04-01 11:27:33
举报
文章被收录于专栏:人生代码

BigInt是一种特殊的数字类型,它支持任意长度的整数。

创建bigint的方法是在整型文字的末尾加上n,或者调用函数bigint从字符串、数字等创建bigint

代码语言:javascript
复制
const bigint = 1234567890123456789012345678901234567890n;

const sameBigint = BigInt("1234567890123456789012345678901234567890");

const bigintFromNumber = BigInt(10); // same as 10n

数学运算符

BigInt通常可以像普通数字一样使用,例如:

代码语言:javascript
复制
alert(1n + 2n); // 3

alert(5n / 2n); // 2

请注意:除法5/2返回的是四舍五入的结果,没有小数部分。所有对bigint类型的操作都返回bigint类型。

我们不能把bigint和普通数字混在一起:

代码语言:javascript
复制
alert(1n + 2); // Error: Cannot mix BigInt and other types

如果需要,应该显式地转换它们:使用BigInt()Number(),像这样:

代码语言:javascript
复制
let bigint = 1n;
let number = 2;

// number to bigint
alert(bigint + BigInt(number)); // 3

// bigint to number
alert(Number(bigint) + number); // 3

转换操作总是静默的,从不出错,但是如果bigint太大,不适合数字类型,那么额外的位将被切断,所以我们在进行这种转换时应该小心。

一元加操作符+值是一种常用的将值转换为数字的方法。

为了避免混淆,bigint不支持:

代码语言:javascript
复制
let bigint = 1n;

alert( +bigint ); // error

比较

比较,例如<,>可以很好地用于bigint和数字:

代码语言:javascript
复制
alert( 2n > 1n ); // true

alert( 2n > 1 ); // true

但是请注意,由于数字和bigint属于不同的类型,它们可以等于==,但不能严格等于===:

代码语言:javascript
复制
alert( 1 == 1n ); // true

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

布尔操作

在if或其他布尔操作中,bigint的行为与数字类似。

例如,在if中,bigint 0n为假值,其他值为真值:

代码语言:javascript
复制
if (0n) {
  // never executes
}

alert( 1n || 2 ); // 1 (1n is considered truthy)

alert( 0n || 2 ); // 2 (0n is considered falsy)
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-03-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 CryptoCode 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 数学运算符
  • 比较
  • 布尔操作
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档