昨天译了一篇文章:BigInt:JavaScript 中的任意精度整数。昨晚又抽空总结了一下 的那些坑。
1. 定义形式
使用数字字面量加 表示支持二进制、八进制、十六进制形式。
对于八进制,只支持新写法 ,不支持旧的写法。
普通写法:
十六进制:
八进制:
二进制:
不支持科学计数法形式:
2. 转换为字符串
当作为 key 时,所有值都会被转换为字符串,而 转字符串时是没有后缀 的。
因此:
数组同理, 等同于 等同于 。
注:这并不意味着 和 是一样的。因为 可以超越 的安全表示边界。
我们可以通过如下代码查一下原因:
因为 。
3. 零值处理
因为 表示的是整数,所以只存在一个 (无正零和负零之分)。
注意: 中没有 ,具体原因见上。
4. 等值判断
同值判定规则:
数组:
:
:
由于 和 不相等,所以在集合中,两者可以共存:
5. 与 Number 比较
和 的不同。
只有函数,没有构造器,因此不能使用 来创建 的实例。
对某些特殊值的处理不同:
当没有参数时, 返回 , 抛出
当非数字时, 返回 , 抛出 或
两者对于 (负零)的处理也不同
两者都会把 转换为 ,把 转换为
对于浮点数, 抛出 异常
对于 和正负无穷, 抛出 异常
6. 类型转换
不能隐式转换为 ,所以在接受 作为参数的运算中,将抛出 异常
但是 下面的函数可以使用:
7. 继续阅读
领取专属 10元无门槛券
私享最新 技术干货