【前端冷知识|分享1-什么情况下a===a-1?】

**知识点:**在JavaScript里,Infinity是一个Number类型的字面量,表示无穷大。当一个Number类型的值,在运算过程中超过了所能表示的最大值,就会得到无穷大。

比如,如果我们将一个不为0的数除以0,得到的结果就是无穷大。

console.log(100/0);//Infinity

对应的,负数也有无穷大。

console.log(-100/0);// -Infinity

如果数值运算的值超过了Number允许表示的范围,也是会得到Infinity.

console.log(1e1000);

在JavaScript里,Number.POSITIVE_INFINITY和Number.NEGATIVE_INFINITY两个常量的值,对应正负Infinity。
Number.isFinite() 可以判断一个数是否是有穷的,Number.isFinite(n),当n是Number类型时,只有它是正负Infinity或NaN时,返回false,其他情况下返回true。

任何一个有穷的数和Infinity的加减运算的结果都是Infinity,而Infinity === Infinity。

let a = Infinity;
console.log(a === a - 1); // true
let b = -Infinity;
console.log(b === b - 1); // true

答案一:正负Inifinity
Infinity运算的结果并不总是Infinity

console.log(Infinity + Infinity); // Infinity
console.log(Infinity - Infinity); // NaN
console.log(Infinity * Infinity); // Infinity
console.log(Infinity / Infinity); // NaN
console.log(Infinity * 0);        // NaN

**知识点:**在JavaScript里,整数可以被精确表示的范围是从 -2 ** 53 + 1 到 2 ** 53 - 1,即 -9007199254740991 到 9007199254740991。超过这个数值的整数,都不能被精确表示。
常量Number.MAX_SAFE_INTEGER和Number.MIN_SAFE_INTEGER分别对应9007199254740991和 -9007199254740991。

let a = 6.22e23;
console.log(a === a - 1); // true

不过NaN与任何值都不相等,包括NaN自身,所以,利用NaN是不可以的:

let a = NaN;
console.log(a === a - 1); // false
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值