• ES6,扩展运算符的用途


    ES6的扩展运算符可以说是非常使用的,在给多参数函数传参,替代Apply,合并数组,和解构配合进行赋值方面提供了很好的便利性。

    扩展运算符就是三个点“...”,就是将实现了Iterator 接口的对象中的每个元素都一个个的迭代并取出来变成单独的被使用。

    看这个例子:

    console.log(...[3, 4, 5])

    结果:

    3 4 5

    调用其实就是:

    console.log(3, 4, 5)
    合并数组
    可以使用扩展运算符将多个数组进行合并。
    let arr1 = [1, 2, 3]
    let arr2 = [4, 5, 6]
    let arr3 = [7, 8, 9]
    console.log([...arr1, ...arr2, ...arr3])

    结果:

    [ 1, 2, 3, 4, 5, 6, 7, 8, 9 ]
    函数多参数传递, 替换Apply
    先把参数定义成数组,函数定义好。
    let arr4 = ['arg1', 'arg2', 'arg3', 'arg4']
    let fun1 = (a1, a2, a3, a4) => {
      console.log( a1, a2, a3, a4)
    }

    在ES6前,要把数组参数传递给函数,要么按照下标访问数组元素去调用函数,缺点是数组个数和函数参数个数完全绑定,有一个个数发生变化,那么就要修改了。

    fun1(arr4[0], arr4[1], arr4[2], arr4[3])

    要么就用Apply进行调用,结果当然是没毛病,也是ES6之前用的最多的。

    fun1.apply(null, arr4)

    如果是用扩展运算符,那就方便咯。

    fun1(...arr4)

    结果:

    arg1 arg2 arg3 arg4

    调用简洁爽快。

    与解构配合赋值
    配合使用,可以从数组中提取除第一个以后的所有元素成另外一个数组。
    let [var1, ...arr5] = [1, 2, 3, 4, 5, 6]
    console.log(var1)
    console.log(arr5)

    结果:

    1
    [ 2, 3, 4, 5, 6 ]

    但要注意,与解构配合时,扩展运算符只能用在最后一个上,否则报错。

    可以展开实现了Iterator 接口的对象
    比如Map,Set,数组就是从Iterator接口实现来的,Object不是,所以扩展Object会报错。
    扩展Set。
    let set1 = new Set()
    set1.add(1)
    set1.add(2)
    set1.add(3)
    console.log(...set1)

    结果:

    1 2 3

    扩展Map。

    let map1 = new Map();
    map1.set('k1', 1);
    map1.set('k2', 2);
    map1.set('k3', 3);
    console.log(...map1)

    结果:

    [ 'k1', 1 ] [ 'k2', 2 ] [ 'k3', 3 ]

    注意,扩展出来的一个个的数组,按照map的键值对结构,每个数组都是2个元素,一个是key,一个是value。

    如果扩展Object,就会报错。

    let obj1 = {
       p1: 1,
       p2: 2,
       p3: 3
    }
    console.log(...obj1)

    报错。

    End

     
     
     
     
     
     
     
     
  • 相关阅读:
    057.Python前端Django模型ORM多表查询
    056.Python前端Django模型ORM多表基本操作
    055.Python前端Django模型ORM
    054.Python之Ubuntu安装Pycharm
    053.Python前端Django框架模板层
    052.Python前端Django框架路由层和视图层
    基数排序
    链表k个节点反向
    链表排序
    函数返回局部指针变量是否可行?
  • 原文地址:https://www.cnblogs.com/kongxianghai/p/7382140.html
Copyright © 2020-2023  润新知