【发布时间】:2021-10-22 16:36:24
【问题描述】:
//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
那么为什么这两种方法有一些区别呢?
【问题讨论】:
标签: javascript arrays indexof