我正在浏览 Javascript.info 中的地图章节,其中有一个关于 SameValueZero 算法的链接。有人可以用简单的语言解释一下该算法是如何工作的吗?
我尝试通过链接但找不到任何内容。
See the 规格 https://www.ecma-international.org/ecma-262/7.0/#sec-samevaluezero:
内部比较抽象操作 SameValueZero(x, y)(其中 x 和 y 是 ECMAScript 语言值)生成 true 或 false。这样的比较执行如下:
- 如果 Type(x) 与 Type(y) 不同,则返回 false。
-
如果 Type(x) 是 Number,则
如果 x 为 NaN 并且 y 为 NaN,则返回 true。
如果 x 为 +0 并且 y 为 -0,则返回 true。
如果 x 为 -0 并且 y 为 +0,则返回 true。
如果 x 与 y 的 Number 值相同,则返回 true。
返回假。
返回 SameValueNonNumber(x, y)。
它基本上与===
测试,除了当x
and y
都是NaN
,他们也通过了测试。你可以这样实现它:
const sameValueZero = (x, y) => x === y || (Number.isNaN(x) && Number.isNaN(y));
console.log(sameValueZero(0, 0));
console.log(sameValueZero(0, 1));
console.log(sameValueZero(0, NaN));
console.log(sameValueZero(NaN, NaN));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)