//indexOf()
console.log([1, 2, NaN].indexOf(NaN)); //-1
//includes()
console.log([1, 2, NaN].includes(NaN)); //true
我不理解为什么includes
可以在数组中找到NaN,而indexOf
却不能。
我读过,这是因为indexOf
内部使用严格相等运算符(NaN === NaN)。但对于我来说,在谈论NaN
时,严格相等运算符和抽象相等运算符之间没有区别。无论如何,NaN
都不能等于其自身。
//strict equality operator
console.log(NaN === NaN); //false
//abstract equality operator
console.log(NaN == NaN); //still false