我偶然发现了这个Array.prototype.includes的polyfill。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/includes。
在第21,22行是否有理由将变量与其自身进行比较?
if (searchElement === currentElement ||
(searchElement !== searchElement && currentElement !== currentElement)) {
return true;
}
最佳答案
是的,||
的第二个操作数确实检查searchElement
和currentElement
是否均为 NaN
-JavaScript中的only value本身不是===
。 includes
应该使用 SameValueZero
equivalence algorithm,它与Strict Equality Comparison Algorithm(由 ===
使用)或 SameValue
algorithm(用于 Object.is
)不同。