ES7特性

    xiaoxiao2021-04-18  214

    1、Array.prototype.includes(value : any) : boolean

    # 例如: > ['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 # includes不加区分+0和-0(这是怎么几乎所有的JavaScript的作品): > [-0].includes(+0) true # 类型数组也将有一个方法includes(): let tarr = Uint8Array.of(12, 5, 3); console.log(tarr.includes(5)); // true

    常见问题

    为什么调用includes而不用contains?

    后者是最初的选择,但是破坏了网络上的代码(MooTools添加了这个方法Array.prototype)。

    为什么调用方法includes不是has?

    has用于keys(Map.prototype.has),includes用于elements(String.prototype.includes)。集合的元素可以被看作是键和值,这就是为什么有Set.prototype.has(和否includes)。

    2、Exponentiation Operator(求冥运算)

    在ES6/2015ES,你能使用Math.pow创建一个短的递归箭头函数 calculateExponent = (base, exponent) => base*((--exponent>1)?calculateExponent(base, exponent):base) console.log(calculateExponent(7,12) === Math.pow(7,12)) // true console.log(calculateExponent(2,7) === Math.pow(2,7)) // true 现在在ES7 /ES2016,以数学向导的开发者可以使用更短的语法: let a = 7 ** 12 let b = 2 ** 7 console.log(a === Math.pow(7,12)) // true console.log(b === Math.pow(2,7)) // true # 或者 let a = 7 a **= 12 let b = 2 b **= 7 console.log(a === Math.pow(7,12)) // true console.log(b === Math.pow(2,7)) // true

    最新回复(0)