ES7新特性
ES7在ES6的基础上添加了三项内容:求幂运算符(**)、Array.prototype.includes()方法、函数作用域中严格模式的变更。
Array.prototype.includes()方法接收两个参数:要搜索的值和搜索的开始索引
includes() 和 indexOf() 的区别
- 相同点:
- 作用都是查找一个值在不在数组里。
- 不同点:
- includes 若值存在则返回true,反之返回false。而 indexOf 则返回下标。
- 两者使用的都是 === 操作符来做值的比较。但是includes()方法有一点不同,两个NaN被认为是相等的,即使在NaN === NaN结果是false的情况下。这一点和indexOf()的行为不同,indexOf()严格使用===判断。
- 应用场景
由于它对NaN的处理方式与indexOf不同,假如你只想知道某个值是否在数组中而并不关心它的索引位置,建议使用includes()。如果你想获取一个值在数组中的位置,那么你只能使用indexOf方法。
let arr = [1, "2", NaN, -0, 0]
arr.includes("2") // true
arr.includes("2", 1) // true
arr.includes("2", 2) // false
arr.includes(NaN) // true
arr.indexOf(NaN) // -1
arr.includes(-0) // true
arr.indexOf(-0) // 1