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

  • 相关阅读:
    sqlserver中判断表或临时表是否存在
    Delphi 简单方法搜索定位TreeView项
    hdu 2010 水仙花数
    hdu 1061 Rightmost Digit
    hdu 2041 超级楼梯
    hdu 2012 素数判定
    hdu 1425 sort
    hdu 1071 The area
    hdu 1005 Number Sequence
    hdu 1021 Fibonacci Again
  • 原文地址:https://www.cnblogs.com/pwindy/p/14680236.html
Copyright © 2011-2022 走看看