推荐答案
ES7 (ES2016) 中新增了两个主要特性:
- Array.prototype.includes():用于判断数组是否包含某个元素,返回布尔值。
- 指数运算符 (
**
):用于计算指数运算,类似于Math.pow()
。
本题详细解读
1. Array.prototype.includes()
Array.prototype.includes()
是 ES7 中新增的数组方法,用于判断数组是否包含某个元素。它返回一个布尔值,表示数组中是否存在指定的元素。
语法
arr.includes(valueToFind[, fromIndex])
valueToFind
:需要查找的元素。fromIndex
(可选):从数组的哪个索引开始查找,默认为 0。
示例
const arr = [1, 2, 3, 4, 5]; console.log(arr.includes(3)); // true console.log(arr.includes(6)); // false console.log(arr.includes(3, 3)); // false,从索引 3 开始查找
与 indexOf
的区别
includes
返回布尔值,而indexOf
返回元素的索引。includes
可以正确处理NaN
,而indexOf
不能。
const arr = [1, NaN, 3]; console.log(arr.includes(NaN)); // true console.log(arr.indexOf(NaN)); // -1
2. 指数运算符 (**
)
ES7 引入了指数运算符 **
,用于计算指数运算。它的功能类似于 Math.pow()
,但语法更简洁。
语法
base ** exponent
base
:基数。exponent
:指数。
示例
console.log(2 ** 3); // 8 console.log(3 ** 2); // 9 console.log(2 ** 3 ** 2); // 512,相当于 2 ** (3 ** 2)
与 Math.pow()
的区别
**
运算符的优先级高于Math.pow()
。**
运算符可以与其他运算符一起使用,而Math.pow()
需要函数调用。
console.log(2 ** 3 + 1); // 9 console.log(Math.pow(2, 3) + 1); // 9
总结
ES7 虽然只引入了两个新特性,但它们在实际开发中非常实用。Array.prototype.includes()
提供了更直观的方式来检查数组中是否包含某个元素,而指数运算符 **
则简化了指数运算的写法。