问答题229/388Object.is和===有什么区别?

难度:
2021-07-06 创建

参考答案:

Object在严格等于的基础上修复了一些特殊情况下的失误,具体来说就是+0和-0,NaN和NaN。

源码如下:

1function is(x, y) { 2if (x === y) { 3//运行到1/x === 1/y的时候x和y都为0,但是1/+0 = +Infinity, 1/-0 = -Infinity, 是不 4一样的 5return x !== 0 || y !== 0 || 1 / x === 1 / y; 6} else { 7//NaN===NaN是false,这是不对的,我们在这里做一个拦截,x !== x,那么一定是 NaN, y 同理 8//两个都是NaN的时候返回true 9return x !== x && y !== y; 10} 11

最近更新时间:2024-07-22

赞赏支持

预览

题库维护不易,您的支持就是我们最大的动力!