MDN“Object.is”替代方案

我已经阅读了“Object.is”方法中的MDN页面。 它为不提供此方法的浏览器提供了一个替代代码:

if (!Object.is) {
    Object.is = function(v1, v2) {
        if (v1 === 0 && v2 === 0) {
            return 1 / v1 === 1 / v2;
        }
        if (v1 !== v1) {
            return v2 !== v2;
        }
        return v1 === v2;
    };
}

问题很简单:第二个“if”是否成立?

感谢您的关注。


它有点写在同一篇文章中:

根据===运算符,这也不相同。 ===运算符(以及==运算符)将数值-0和+0视为相等,并且它将Number.NaN视为不等于NaN

逻辑是NaN !== NaN!==运算符在同一个变量上返回true的唯一情况,所以它必须是关于NaN比较的。 然后,它对v2执行相同的检查,并根据结果返回false的真假:如果v2比较为true ,则是关于NaN与NaN的比较,因此返回true ,如果不是,则返回false因为NaN永远不会是相同的,吨NaN。

链接地址: http://www.djcxy.com/p/77173.html

上一篇: MDN "Object.is" alternative proposal

下一篇: How to calculate wind direction from U and V wind components in R