导入
ES2016 中的新特性
让我们来看看 ES2016 引入的新特性。
ES2016 仅引入了两个新特性:
Array.prototype.includes()- 指数运算符
Array.prototype.includes()
includes() 方法会在数组包含某个元素时返回 true,否则返回 false。
1let array = [1, 2, 4, 5]; 2 3console.log(array.includes(2)); 4// true 5console.log(array.includes(3)); 6// false
将 includes() 与 fromIndex 结合使用
我们可以为 .includes() 提供一个起始搜索的索引。默认值是 0,也可以传入负值。
第一个参数是要查找的元素,第二个参数是开始搜索的索引:
1let array = [1, 3, 5, 7, 9, 11]; 2 3console.log(array.includes(3, 1)); 4// 从数组索引 1 开始查找数字 3 5// true 6console.log(array.includes(5, 4)); 7// false 8console.log(array.includes(1, -1)); 9// 从数组末尾开始向前查找数字 1 10// false 11console.log(array.includes(11, -3)); 12// true
在第 6 行,array.includes(5, 4) 返回 false,因为虽然数组中确实包含数字 5,但它位于索引 2 处,而我们是从索引 4 开始查找的,因此找不到,返回 false。
array.includes(1, -1) 返回 false,因为我们从索引 -1(即数组最后一个元素)开始查找,并继续向后搜索。
array.includes(11, -3) 返回 true,因为我们从索引 -3 开始向前遍历,在路径上找到了值为 11 的元素。
指数运算符
在 ES2016 之前,我们通常这样写:
1console.log(Math.pow(2, 2)); 2// 4 3console.log(Math.pow(2, 3)); 4// 8
现在使用新的指数运算符,可以这样写:
1console.log(2**2); 2// 4 3console.log(2**3); 4// 8
当需要组合多个操作时,这个运算符会非常有用,例如:
1console.log(2**2**2); 2// 16 3console.log(Math.pow(Math.pow(2, 2), 2)); 4// 16
使用 Math.pow() 需要不断嵌套调用,代码容易变得冗长且混乱。指数运算符提供了一种更快、更简洁的实现方式。
在下一节课中,我们将通过一个测验和一个编程挑战来检验本节课所学内容。