我们在看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://segmentfault.com/a/1190000021975579

JS中三个点(...)相关推荐

  1. js中三个判断的应用——if else、三元运算符、switch case

    js中三个判断的应用--if else.三元运算符.switch case 区别 if .else if.else 是最常用的判断,可以解决js中的所有的判断需求 三元运算符应用于简单的if else ...

  2. JS中三种字符串连接方式及其性能比较

    工作中经常会碰到要把2个或多个字符串连接成一个字符串的问题,在JS中处理这类问题一般有三种方法,这里将它们一一列出顺便也对它们的性能做个具体的比较. 第一种方法  用连接符"+"把 ...

  3. 详细了解JS中三目运算

    ?什么是三目运算? 一.三目运算就是两个符号(?).(:)把一个句子拆分成三句. 二.三目语法 第一句话?第二句话:第三句话: 条件?成立执行第二句话:不成立执行第三句话: 三.它的作用是什么呢? 就 ...

  4. js中三种弹窗的使用

    1.alert()–警告消息框 alert 方法有一个参数,即希望对用户显示的文本字符串.该字符串不是 HTML 格式.该消息框提供了一个"确定"按钮让用户关闭该消息框,并且该消息 ...

  5. js 中的三个等号

    Js 中 三个等号(===) 和两个等号(==)的区别 简单来说就是使用"=="时,如果两边类型不同,js引擎会把它们转换成相同类型然后在进行比较,而"===" ...

  6. js中const,var,let区别与用法

    原文链接:https://blog.csdn.net/qq_36784628/article/details/80966826 js中三种定义变量的方式const, var, let的区别. 1. c ...

  7. 【js】js中const,var,let区别

    在node.js使用例子中,第一次看到const的声明,查询了一下,可以看得出来: http://www.cnblogs.com/ksl666/p/5944718.html 参考 主要内容是:js中三 ...

  8. js中如何拼接字符串

    JS中有三种字符串连接方式: 第一种方法 , 用连接符"+"把要连接的字符串连起来: str="a"; str+="b"; 第二种方法,   ...

  9. Thymeleaf读取model里面的对象||Thymeleaf读取model里面的集合||Themeleaf在js中取值||访问带参数的消息||ThymeleafObjects的使用[取三大作域的值

    Thymeleaf读取model里面的对象 Student.java package com.sxt.domain;import lombok.AllArgsConstructor; import l ...

最新文章

  1. activiti 工作流 动态 设置 指定 节点任务人、责任人、组 的实现方式
  2. 使用subgit进行svn迁移至git(branch,tags)
  3. 研究人员的AI技术能够实时匹配活页乐谱与MIDI音频
  4. Sqlit--学习教程(基本操作1)
  5. Python把嵌套的字符串列表转换为整数列表的两种方法
  6. python给生活带来哪些改变_Python - 笔记1
  7. 洛谷 P3378 【模板】堆
  8. python3+requests接口自动化-其他接口封装
  9. gitlab提交代码
  10. 命令解析optparse
  11. php 5.2 spl_autoload_register,PHP 中的__autoload() 与spl_autoload_register()函数
  12. 企业IT治理样板间首次直播,教您如何打造高效可控的云环境
  13. 学习chirp信号笔记
  14. 阿里云盘秒传使用方法
  15. kali更改/root下中文目录为英文教程
  16. 计算机专业毕设论文题目大全(二)
  17. 调用win api将指定名称的打印机设置为默认打印机
  18. 智能驾驶仿真场景构建技术
  19. 连连支付提现人民币的时候汇率是怎么样的?
  20. LoadLibrary无法加载.dll解决思路

热门文章

  1. 【Proteus仿真】简易51单片机时钟,带闹钟功能,可调整时间
  2. SMO(序列最小优化算法)解析
  3. Android高级开发书籍
  4. 常用VBScript
  5. 11月第1周业务风控关注 |工信部启动App侵害用户权益专项整治工作 12月20日是大限
  6. EL| EL表达式(Java)
  7. matplotlib库问题:UserWarning: findfont: Font family [‘MicroSoft YaHei‘] not found.Falling back
  8. python任务调度之schedule
  9. postfix+squirrelmail实现邮件服务器
  10. 学生通讯管理系统v2.0