跳到主要内容

ES7 (ES2016)

· 阅读需 2 分钟

ES2016(ES7)是一个相对较小的更新版本,只引入了两个新特性:Array.prototype.includes 方法和指数运算符。这些更新虽然不多,但为开发者提供了更便捷的数组操作和数学运算方式。

ES2016(ES7)是一个相对较小的更新版本,只引入了两个新特性:

  1. Array.prototype.includes
  2. Exponentiation Operator

1. Array.prototype.includes

Array.prototype.includes 方法用于检查一个数组中是否包含某个特定的元素,返回布尔值 true 或 false。

const arr = [1, 2, 3, 4, 5];
console.log(arr.includes(3)); // true
console.log(arr.includes(-1)); // false

优势:它是 indexOf 的改进版本,区别在于 indexOf 返回的是元素的索引值,而 includes 返回布尔值。这样所表达的语义更好一些。此外,includes 还可以正确处理 NaN,而 indexOf 不能。

// 以前通常使用 indexOf 来查找特定的元素
console.log(arr.indexOf(3)); // 2
console.log(arr.indexOf(-1)); // -1

console.log([NaN].includes(NaN)); // true
console.log([NaN].indexOf(NaN)); // -1

2. Exponentiation Operator

这个操作符用于求幂运算,类似于数学中的指数运算。它是 Math.pow() 的简化写法。

console.log(Math.pow(2, 3)); // 8
console.log(Math.pow(3, 4)); // 81

console.log(2 ** 3); // 8
console.log(3 ** 4); // 81

关于这个运算符的结合性,一定要注意,它是右结合性,计算的时候从右往左。

面试题:

let i = 1;
let o = {
// 访问器属性
get a() {
return ++i;
},
};
console.log(o.a ** o.a ** o.a);
// 2 ** 3 ** 4
// 2 ** 81
// 2417851639229258349412352

-EOF-