ES7新特性

作者: 无语懵逼 | 来源:发表于2018-05-28 10:15 被阅读0次

    ES7在ES6的基础上添加了三项内容:求幂运算符(**)Array.prototype.includes()方法、函数作用域中严格模式的变更。

    1.Array.prototype.includes()方法

    includes()的作用,是查找一个值在不在数组里,若在,则返回true,反之返回false。 基本用法:

    ['a', 'b', 'c'].includes('a')// true

    ['a', 'b', 'c'].includes('d')// false

    Array.prototype.includes()方法接收两个参数:要搜索的值和搜索的开始索引。当第二个参数被传入时,该方法会从索引处开始往后搜索(默认索引值为0)。若搜索值在数组中存在则返回true,否则返回false。 请看下面示例代码:

    ['a', 'b', 'c', 'd'].includes('b')        // true

    ['a', 'b', 'c', 'd'].includes('b', 1)     // true

    ['a', 'b', 'c', 'd'].includes('b', 2)    // false

    那么,我们会联想到ES6里数组的另一个方法indexOf,下面的示例代码是等效的:

    ['a', 'b', 'c'].includes('a')             //true

    ['a', 'b', 'c'].indexOf('a') > -1      //true

    比较两者的优缺点和使用场景:

        简便性:

           从这一点上来说,includes略胜一筹。熟悉indexOf的都知道,indexOf返回的是某个元素在数组中的下标值,若想判断某个元素是否在数组里,我们还需要做额外的处理,即判断该返回值是否>-1。而includes则不用,它直接返回的便是Boolean型的结果。

         精确性:

           两者使用的都是 === 操作符来做值的比较。但是includes()方法有一点不同,两个NaN被认为是相等的,即使在NaN === NaN结果是false的情况下。这一点和indexOf()的行为不同,indexOf()严格使用===判断。请看下面示例代码:

    let  demo= [1, NaN, 2, 3]

    demo.indexOf(NaN)        //-1    找到就返回-1

    demo.includes(NaN)       //true

    2.求幂运算符(**)

       基本用法:

            3 ** 2          // 9

       效果同:

             Math.pow(3, 2)       // 9

    **的意思是什么?

           ** 是一个用于求幂的中缀算子,比较可知,中缀符号比函数符号更简洁,这也使得它更为可取。 

    相关文章

      网友评论

        本文标题:ES7新特性

        本文链接:https://www.haomeiwen.com/subject/dkuwjftx.html