Javascript 提案 BigInt 的一些坑

昨天译了一篇文章:BigInt:JavaScript 中的任意精度整数。昨晚又抽空总结了一下 的那些坑。

1. 定义形式

使用数字字面量加 表示支持二进制、八进制、十六进制形式。

对于八进制,只支持新写法 ,不支持旧的写法

普通写法:

十六进制:

八进制:

二进制:

不支持科学计数法形式:

2. 转换为字符串

当作为 key 时,所有值都会被转换为字符串,而 转字符串时是没有后缀 的。

因此:

数组同理, 等同于 等同于 。

:这并不意味着 和 是一样的。因为 可以超越 的安全表示边界。

我们可以通过如下代码查一下原因:

因为 。

3. 零值处理

因为 表示的是整数,所以只存在一个 (无正零和负零之分)。

注意: 中没有 ,具体原因见上。

4. 等值判断

同值判定规则:

数组:

由于 和 不相等,所以在集合中,两者可以共存:

5. 与 Number 比较

和 的不同。

只有函数,没有构造器,因此不能使用 来创建 的实例。

对某些特殊值的处理不同:

当没有参数时, 返回 , 抛出

当非数字时, 返回 , 抛出 或

两者对于 (负零)的处理也不同

两者都会把 转换为 ,把 转换为

对于浮点数, 抛出 异常

对于 和正负无穷, 抛出 异常

6. 类型转换

不能隐式转换为 ,所以在接受 作为参数的运算中,将抛出 异常

但是 下面的函数可以使用:

7. 继续阅读

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180507B0N1G700?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注腾讯云开发者

领取腾讯云代金券