ES6新增了数组实例的includes(),没有该方法之前,通常使用数组的indexOf方法,检查是否包含某个值。
1.返回值类型
indexOf返回数值型,includes返回布尔类型
[1,2,3].indexOf(2) // 1
[1,2,3].includes(2) // true
2.对NaN类型的判断
[NaN].indexOf(NaN) // -1
[NaN].includes(NaN) // true
indexOf造成对NaN的误判的原因:内部使用严格相等运算符(===)进行判断
3.当数组中存在为空的值的时候,includes会认为空的值是undefined,而indexOf不会
var arr = new Array(3)
console.log(arr.indexOf(undefined)); // -1
console.log(arr.includes(undefined)); // true
总结:如果想知道元素在数组中的位置,使用indexOf方法比较合适;想知道是否该元素是否存在,使用includes方法比较合适,视情况而定