面试官:什么情况下,a === a - 1 ?
有没有小伙伴看到这题的时候突然想骂人,这是什么lj题目,这对我日常开发有用吗?
小编第一次看到这种题目也会有爆粗的时候,但是如果是常规的面试题好像也就没有分享的意义了,是不是突然觉得很有道理? 好,那么直接来揭晓答案,如果你在10s内想不出答案,说明你已经回答不出这道题了。
第一种情况:当 a 为 Infinity 时
let a = Infinity;
console.log(a === a - 1); // true
// 再进行多次比较
console.log( Infinity * 121); // Infinity
console.log( Infinity / 121); // Infinity
console.log( Infinity + 121); // Infinity
console.log( Infinity - 121); // Infinity
// 由此我们可以得出结论:Infinity与任何number类型的值进行运算时,都等于 Infinity
结论:Infinity 与任何 number 类型的值进行运算时,都等于 Infinity
第二种情况:当a等于 Number.MIN_SAFE_INTEGER - 1 时
let a = Number.MIN_SAFE_INTEGER - 1
console.log( a === a - 1); // true
// 聪明的小伙伴可能已经得出结论:js数值精度问题
结论:这是由于js对大数值的一个精度问题,当数值超过js所能表达的最小数值时,那么再进行操作时有可能会出现精度问题
今天的每日一题就到这里,如果有疑问或想补充,欢迎在底部评论,如果对你有帮助,可以点赞收藏转发,每日更新