持续学习之ES7特性概要

这是我参与11月更文挑战的第26天,活动详情查看:2021最后一次更文挑战

特性概要

  • Array.prototype.includes()
  • find() 和 findIndex()
  • 求幂运算符 **在 ES7 中引入了指数运算符,具有与 Math.pow() 等效的计算结果

Array.prototype.includes()

在 ES6 中我们有 String.prototype.includes() 可以查询给定字符串是否包含一个字符,而在 ES7 中,我们在数组中也可以用 Array.prototype.includes 方法来判断一个数组是否包含一个指定的值,根据情况,如果包含则返回 true,否则返回 false。

const arr = [1, 3, 5, 2, '8', NaN, -0]
arr.includes(1) // true
arr.includes(1, 2) // false 该方法的第二个参数表示搜索的起始位置,默认为 0
arr.includes('1') // false
arr.includes(NaN) // true
arr.includes(+0) // true
复制代码

在 ES7 之前想判断数组中是否包含一个元素,有如下两种方法, 但都不如 includes 来得直观:

  • indexOf()

indexOf() 方法返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回 -1。

if (arr.indexOf(el) !== -1) {
  // ...
}
复制代码

不过这种方法有两个缺点,一是不够语义化,要先找到参数值的第一个出现位置,所以要去比较是否不等于 -1,表达起来不够直观。二是,它内部使用严格相等运算符(===)进行判断,这会导致对 NaN 的误判。

[NaN].indexOf(NaN)// -1
复制代码

find() 和 findIndex()

数组实例的 find 方法,用于找出第一个符合条件的数组成员。另外,这两个方法都可以发现 NaN,弥补了数组的 indexOf 方法的不足。\

[1, 4, -5, 10].find((n) => n < 0) // -5
[1, 5, 10, 15].findIndex(function(value) {
  return value > 9;
}) // 2
[NaN].findIndex(y => Object.is(NaN, y)) // 0
复制代码

Array.prototype.includes() 的支持情况:

image.png

求幂运算符 **在 ES7 中引入了指数运算符,具有与 Math.pow() 等效的计算结果

console.log(2**10);// 输出 1024zhicc
console.log(Math.pow(2, 10)) // 输出 1024
复制代码

image.png

Guess you like

Origin juejin.im/post/7034791416362434567