indexOf和includes相比较:
相同点:二者所传的参数是一样的,
第一个参数传要判断的元素
,第二个参数传开始检索的下标位置
,两者都在数组和字符串上使用
不同点:返回值不同
indexOf:
返回的是元素的所在下标,如果不存在则返回-1
优点: 元素存在可获取到元素的位置
缺点:
(1)无法判断是否有NaN的元素
(2)返回的值不够语义化,需要我们进行处理
includes:
返回一个Boolean值,有:true,没有:false
优点:
(1)可判断NaN元素
(2)返回值十分语义化,不需要再次处理
缺点: 无法获取元素的下标
判断是否有NaN:
const arr = [NaN];
alert( arr.indexOf(NaN) ); // -1(应该为 0,但是严格相等 === equality 对 NaN 无效)
alert( arr.includes(NaN) );// true(这个结果是对的)