推荐答案
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() 提供了更直观的方式来检查数组中是否包含某个元素,而指数运算符 ** 则简化了指数运算的写法。