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。
上一篇: MDN "Object.is" alternative proposal
下一篇: How to calculate wind direction from U and V wind components in R