ES2016 包含了两个新的功能:
- 幂运算符(
**
和**=
) - 数组方法
Array.prototype.includes
includes()
确定给定元素是否包含在指定数组中。如果存在返回 true
,否则返回 false
。
const arr = [10, 11, 3, 20, 5]
const includesTwenty = arr.includes(20)
console.log(includesTwenty) // true
includes
方法还接受一个可选参数来指定要从中搜索的索引。默认情况下,index
参数为零。
const arr = [1, 2, 3, 4, 5]
if(arr.includes(3, 2)) {
console.log('item found')
} else {
console.log('item not found')
}
includes
类似于 indexOf
:
arr.includes(x)
arr.indexOf(x) >= 0
主要区别在于 includes()
查找 NaN
,而 indexOf()
没有:
[NaN].includes(NaN) // true
[NaN].indexOf(NaN) // -1
includes
不区分 +0
和 -0
,几乎所有 JavaScript 都是这样工作的(除了 Object.is
):
[-0].includes(+0) //true
Object.is(+0, -0) // false
类型化数组也将有一个方法 includes()
:
let tarr = Uint8Array.of(12, 5, 3)
console.log(tarr.includes(5)) // true
ES7 中引入了幂运算符(Exponentiation operator)**
,**
具有与 Math.pow(..)
等效的计算结果。
例如:a ** b
是 Math.pow(a, b)
的简写,a **= b
是 a = a ** b
的简写
console.log(2 ** 3) // 8
console.log(Math.pow(2, 3)) // 8
let num = 2
console.log(num **= 3) // 8
幂赋值运算符使一个变量为底数、以右值为指数的指数运算(乘方)结果赋给该变量。