我偶然发现了这个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;
}

最佳答案

是的,||的第二个操作数确实检查searchElementcurrentElement是否均为 NaN -JavaScript中的only value本身不是===includes应该使用 SameValueZero equivalence algorithm,它与Strict Equality Comparison Algorithm(由 === 使用)或 SameValue algorithm(用于 Object.is )不同。

10-07 21:40