• ES6函数的拓展形参和拓展运算符


    函数的拓展形参 rest

    • 在形参里,...rest表示剩余参数运算符,

    • 后边紧跟形参名 剩余参数是一个数组,如果没有传参,默认是空数组

    • 写法

      1. function fn(形参1,形参2,... , ...rest){
      2. }
      3. fn(实参1,实参2,实参3,....)

    • 作用:所有形参按照顺序 接收实参 最后 如果实参多于形参 多出来的实参 由 rest接收 rest是一个数组 多出来的实参 会作为 rest的数组项存在
    • rest在很多时候 可以用来 扮演arguments的角色

    • 用rest实现arguments的效果

      1. function fn(...rest){
      2. }
      3. fn(实参1,实参2,实参3,....)

    • 注意:...rest 必须要写在函数的所有形参之后 如果写在某一形参前面 就要出问题

    拓展运算符

     写法:...

    • 用法:...要被拓展的数据

    • 作用:拓展运算符 可以 直接将 数组、伪数组中的数组项或成员 直接取出来(不需要循环)

    • 写法

      1. let arr = [1,2,3,4,5];
      2. //打印所有数组项
      3. console.log(...arr);

    • 拓展运算符 可以拓展所有的数组 和 伪数组(数组、set、map、元素集合、rest、arguments...)

    • 注意:不能拓展对象(不绝对)

    • 实际应用

      • 浅拷贝(不能浅拷贝对象)

        1. /* //可以做浅拷贝
        2. let arr = [1,2,3,[4,5,6]];
        3. let arr1 = [...arr];
        4. console.log(arr,arr1);
        5. arr[0] = 0;
        6. console.log(arr,arr1);
        7. arr[3][0] = 9;
        8. console.log(arr,arr1); */
        9. //求最大值
        10. let arr = [1,2,3,4,5,6,7];
        11. //声明一个变量 记录最大值
        12. // let max = arr[0];
        13. // arr.forEach(function(item){
        14. // if(max
        15. // [item,max] = [max,item]
        16. // }
        17. // })
        18. // console.log(max)
        19. // let max = Math.max.apply(Math,arr);
        20. // console.log(max);
        21. let max = Math.max(...arr);
        22. console.log(max)
        23. //数组合并
        24. let arr1 = [1,2,3];
        25. let arr2 = [4,5,6];
        26. let arr3 = [...arr1,...arr2];
        27. console.log(arr3);
        28. //伪数组转数组
        29. let set = new Set([1,2,3,4,5]);
        30. let arr4 = [...set];
        31. console.log(arr4);
        32. //对象的浅拷贝
        33. let obj = {
        34. name:"张三",
        35. age:18,
        36. gender:"男",
        37. skills:["吃饭","睡觉","犯罪"]
        38. }
        39. let obj1 = {
        40. ...obj
        41. }
        42. //浅拷贝之后 还可以在新对象中 添加新属性
        43. let obj2 = {
        44. ...obj,
        45. hobbies:["读书","看报","睡觉","干活"],
        46. //我们还可以修改原本对象中的属性
        47. name:"王五"
        48. }
        49. console.log(obj,obj1)
        50. obj.name = "李四"
        51. console.log(obj,obj1)
        52. obj.skills[2] = "洗心革面,重新做人,缝纫机蹬出火星子";
        53. console.log(obj,obj1)
        54. console.log(obj2);

  • 相关阅读:
    C语言 做一个学生信息管理系统
    工作小计 zookpeer3.8 C api环境搭建
    C语言经典100例题(56-60)--画圆;画方;画线
    Matlab进阶绘图第29期—三角热图
    【计算机网络】TCP传输控制协议——三次握手
    1.3 字符编码
    CPP的uint32_t类型简介
    如何在Microsoft Exchange 2010中安装SSL证书
    [项目设计] 从零实现的高并发内存池(四)
    域内批量解析chrome浏览器
  • 原文地址:https://blog.csdn.net/weixin_64037609/article/details/127043982