Why does [NaN].includes(NaN) return true in JavaScript? Why does [NaN].includes(NaN) return true in JavaScript? arrays arrays

Why does [NaN].includes(NaN) return true in JavaScript?


According to MDN's document say that

Note: Technically speaking, includes() uses the sameValueZeroalgorithm to determine whether the given element is found.

const x = NaN, y = NaN;console.log(x == y); // false                -> using ‘loose’ equalityconsole.log(x === y); // false               -> using ‘strict’ equalityconsole.log([x].indexOf(y)); // -1 (false)   -> using ‘strict’ equalityconsole.log(Object.is(x, y)); // true        -> using ‘Same-value’ equalityconsole.log([x].includes(y)); // true        -> using ‘Same-value-zero’ equality