includes方法返回的是Boolean类型的值。元素存在返回true,不存在返回false。indexOf方法返回的是Number类型的值。元素存在则返回第一次出现的索引值,不存在则返回-1。if的判断条件时(如下代码示例),
includes方法的返回值result1,使用if(result1){...}进行判断元素是否存在;indexOf方法的返回值result2,使用if(result2 !== -1){...}或者if(result2 >= 0){...}判断元素是否存在。let arr1 = [1,2,3,4]
let result1 = arr1.includes(2)
let result2 = arr1.indexOf(2)
console.log(result1) //true Boolean类型
console.log(result2) //1 Number类型

indexOf和includes都可以添加第二个参数,表示开始查找的位置:
indexOf(2,2)表示从索引值为2的元素开始从左往右查找是否有元素2indexOf(2,-2)表示从从后往前的第2个数字开始从左往右查找是否有元素2(注意查找顺序都是从左往右),如数组[1,2,3,4,5,6].indexOf(2,-2)表示从5的位置从左往右查找是否有2。includes方法的第二个参数也是一样的。let arr1 = [1,2,3,4]
console.log(arr1.indexOf(2,2)) //-1
console.log(arr1.includes(2,2)) //false
console.log(arr1.indexOf(3,-2))//2
console.log(arr1.includes(3,-2))//true

includes能匹配到NaN,但是indexOf不行;includes能识别到稀疏数组中的undefined,但是indexOf不可以.console.log([NaN,1,2,3].includes(NaN))//true
console.log([NaN,1,2,3].indexOf(NaN))//-1
//定义一个稀疏数组arr,只给索引值为3的元素赋值1,则其他为undefined
let arr = []
arr[3] = 1
console.log(arr) //[empty × 3, 1]
console.log(arr.includes(undefined)) //true
console.log(arr.indexOf(undefined)) //-1

===,即当元素的数据类型不相同时,无法匹配到对应的元素。//数组的情况:严格匹配
console.log(['1','2','3','4'].includes(2))//false
console.log(['1','2','3','4'].indexOf(2))//-1
//字符串的情况:会做类型转换
console.log('12345'.includes(2))//true
console.log('12345'.indexOf(2))//1

以上便是JavaScript中的inludes和indexOf方法的一些内容,有任何不足欢迎在评论区补充。