ECMAScript 2016引进了两个新的特性
- Array.prototype.includes
- 幂运算符(**)
1. 数组方法includes
数组方法includes的有如下签名:
Array.prototype.includes(value : any) : boolean
如果value是当前数组的元素则返回true,否则返回false。
['a', 'b', 'c'].includes('a')
// true
['a', 'b', 'c'].includes('d')
// false
includes
和indexOf
方法很类似,以下表达式是相等的:
arr.includes(x)
arr.indexOf(x) >= 0
主要的不同是includes
能找到NaN
元素,但indexOf
不能:
[NaN].includes(NaN)
// true
[NaN].indexOf(NaN)
// -1
像其他的JavaScript工作一样,includes也不区分+0
和-0
[-0].includes(+0)
// true
此外类型数组也有includes方法
let tarr = Uint8Array.of(12, 5, 3);
console.log(tarr.includes(5)); // true
2. 幂运算符(**)
**
是一个求幂中缀运算符,以下两个表达式的值相等:
x ** y
Math.pow(x, y)
样例
const squared = 3 ** 2; // 9
let num = 3;
num **= 2;
console.log(num); // 9
function dist(x, y) {
return Math.sqrt(x**2 + y**2);
}
优先级
幂操作符**
的优先级非常高,它要优先于乘法运算符*
2**2 * 2 // 8
2 ** (2*2) // 16