返回值不同
- indexOf 返回数值类型,表示当前第一个匹配到的数组索引
- includes 返回布尔类型,判断是否在数组中存在这个值
比较算法的差异
- indexOf 使用严格相等来比较是否相等
- includes 使用 sameValueZero 算法来比较是否相同
ES2015 有四种相等算法:
- 一般相等比较
- 严格相等比较(===),用于
indexOf
且是大小写匹配的 - SameValueZero,自 ES2016 开始,用于 ArrayBuffer 构造函数,以及 Map 和 Set 操作以及
includes
方法 - 相同值,其它地方使用
SameValueZero 和 === 的区别:
// 只在于对 NaN 值的处理
[NaN, NaN].indexOf(NaN)
> -1
[NaN, NaN].includes(NaN)
> true
参考
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Equality_comparisons_and_sameness
网友评论