zoukankan      html  css  js  c++  java
  • JS中三个点(...)是什么鬼?

    我们在看js代码时经常会出现(...)三个点的东西,它究竟是什么意思?又有何用处?
    下面我就给大家分享一下三个点的那些事

    什么意思?

    三个点(...)真名叫扩展运算符,是在ES6中新增加的内容,它可以在函数调用/数组构造时,将数组表达式或者string在语法层面展开;还可以在构造字面量对象时将对象表达式按照key-value的方式展开

    字面量一般指[1,2,3]或者{name:'chuichui'}这种简洁的构造方式,多层嵌套的数组和对象三个点就无能为力了

    说白了就是把衣服脱了,不管是大括号([])、花括号({}),统统不在话下,全部脱掉脱掉!

    // 数组
    var number = [1,2,3,4,5,6]
    console.log(...number) //1 2 3 4 5 6
    //对象
    var man = {name:'chuichui',height:176}
    console.log({...man}) / {name:'chuichui',height:176}

    有什么用?

    它的用处很广泛,我们随处都可以看到,下面是几个常见的例子

    复制用它

    //数组的复制
    var arr1 = ['hello']
    var arr2 =[...arr1]
    arr2 // ['hello']
    //对象的复制
    var obj1 = {name:'chuichui'}
    var obj2 ={...arr}
    ob12 //  {name:'chuichui'}

    合并用它

    //数组的合并
    var arr1 = ['hello']
    var arr2 =['chuichui']
    var mergeArr = [...arr1,...arr2]
    mergeArr  // ['hello','chuichui']
    // 对象分合并
    var obj1 = {name:'chuichui'}
    var obj2 = {height:176}
    var mergeObj = {...obj1,...obj2}
    mergeObj // {name: "chuichui", height: 176}

    字符转数组用它

    var arr1 = [...'hello']
    arr1 // ["h", "e", "l", "l", "o"]

    函数传参用它

    可以和正常的函数相结合,灵活使用

    function f(v,w,x,y,z){ }
    var args = [2,3]
    f(1,...args,4,...[5])

    当我们想把数组中的元素迭代为函数参数时,用它!

    function f(x,y,z){}
    var args = [1,2,3]
    f(...args)
     
    // 以前的方法
    f.apply(null,args);

    参考---https://www.cnblogs.com/makalochen/p/13967875.html

    参考---https://segmentfault.com/a/1190000021975579

  • 相关阅读:
    python模块--time模块
    python模块--如何相互调用自己写的模块
    Animating Views Using Scenes and Transitions
    fragment 切换
    android textview 设置text 字体
    android intent 5.1
    android EditView ime
    animation of android (4)
    animation of android (3)
    animation of android (2)
  • 原文地址:https://www.cnblogs.com/pwindy/p/14680236.html
Copyright © 2011-2022 走看看