码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • JavaScript 里三个点 ...,可不是省略号啊···


    摘要:Three dots ( … ) in JavaScript。

    本文分享自华为云社区《JavaScript 里三个点 ... 的用法》,作者: Jerry Wang 。

    Rest Parameters

    使用 rest 参数,我们可以将任意数量的参数收集到一个数组中,然后用它们做我们想做的事情。 引入了其余参数以减少由参数引起的样板代码。

    复制代码
    function myFunc(a, b, ...args) {
     console.log(a); // 22
     console.log(b); // 98
     console.log(args); // [43, 3, 26]
    };
    myFunc(22, 98, 43, 3, 26);
    复制代码

    在 myFunc 的最后一个以 … 为前缀的参数中,这将导致所有剩余的参数都放在 javascript 数组中。

    rest 参数收集所有剩余的参数,因此在最后一个参数之前添加 rest 参数是没有意义的。 其余参数必须是最后一个形参。

    rest 参数可以解构(仅限数组),这意味着它们的数据可以解包为不同的变量。

    复制代码
    function myFunc(...[x, y, z]) {
     return x * y* z;
    }
    myFunc(1) // NaN
    myFunc(1, 2, 3) // 6
    myFunc(1, 2, 3, 4) // 6 (fourth parameter is not destructured)
    复制代码

    Spread Operators

    展开运算符用于将可迭代对象(如数组)的元素扩展到可以容纳多个元素的位置。

    复制代码
    function myFunc(x, y, ...params) { // used rest operator here
      console.log(x);
      console.log(y);
      console.log(params);
    }
    var inputs = ["a", "b", "c", "d", "e", "f"];
    myFunc(...inputs); // used spread operator here
    // "a"
    // "b"
    // ["c", "d", "e", "f"]
    复制代码

    一直有多种组合数组的方法,但是扩展运算符提供了一种用于组合数组的新方法:

    const featured = ['Deep Dish', 'Pepperoni', 'Hawaiian'];
    const specialty = ['Meatzza', 'Spicy Mama', 'Margherita'];
    const pizzas = [...featured, 'veg pizza', ...specialty];
    console.log(pizzas); // 'Deep Dish', 'Pepperoni', 'Hawaiian', 'veg pizza', 'Meatzza', 'Spicy Mama', 'Margherita'

    使用扩展运算符,现在可以使用比 Object.assign() 更短的语法进行浅克隆(不包括原型)或合并对象。

    复制代码
    var obj1 = { foo: 'bar', x: 42 };
    var obj2 = { foo: 'baz', y: 13 };
    var clonedObj = { ...obj1 };
    // Object { foo: "bar", x: 42 }
    var mergedObj = { ...obj1, ...obj2 };
    // Object { foo: "baz", x: 42, y: 13 }
    复制代码

    总结

    当我们在代码中看到三个点 (…) 时,它要么是 rest 参数,要么是展开运算符。

    有一个简单的方法来区分它们:

    • 当三个点 (…) 位于函数参数的末尾时,它是“rest 参数”并将参数列表的其余部分收集到一个数组中。
    • 当三个点 (…) 出现在函数调用或类似函数中时,它被称为“扩展运算符”并将数组扩展为 list.

     

    点击关注,第一时间了解华为云新鲜技术~

  • 相关阅读:
    java毕业生设计新冠疫苗预约系统计算机源码+系统+mysql+调试部署+lw
    抖音矩阵系统。抖音矩阵系统。抖音矩阵系统。抖音矩阵系统。
    重定向到另一个页面
    Spring(二)-生命周期 + 自动装配(xml) +自动装配(注解)
    禁止浏览器缩放
    STM8的C语言编程(10)--+修改CPU的时钟
    计算机毕业设计Java网上拍卖系统设计(源码+系统+mysql数据库+Lw文档)
    Linux·内核编译错误
    [附源码]计算机毕业设计兴达五金日杂批发商店管理系统Springboot程序
    代码检测利器“利特莫斯”之优化血泪史
  • 原文地址:https://www.cnblogs.com/huaweiyun/p/16561837.html
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号