剩余运算符:rest运算符

        // 1.一定在最后// 2.剩余运算符是数组,arguments是一个伪数组function add(...rest) {console.log(arguments); //[1,2,3]伪数组console.log(rest); //[1,2,3]数组let sum = 0;rest.forEach(function(i) {sum += i;})console.log(sum);}add(1, 2, 3)

案例解析

 function family(company, ...rest) {console.log(arguments); //['百度', '广告', '链接', '网站']console.log(rest); //['广告', '链接', '网站']console.log(`${company}:${rest.join(',')}`); //百度:广告,链接,网站}family('百度', '广告', '链接', '网站')

...rest是剩余运算符有传入参数的话传入参数不会进入...rest中

展开运算符

逆运算 参数可以传入数组 

{function add(a, b, c) {console.log(a + b + c);}add(1, 2, 3)add(...[3, 4, 5]) //等于add(3,4,5)
}

拷贝对象 

{let obj1 = {name: "张三",age: 20,sex: "女",d: new Date()}//可以使用...obj1代替一串代码let obj2 = {/* name:obj1.name,age:obj1.age,sex:obj1.sex, */...obj1,friend: "李四"};//可以改变其中的一个let obj3 = {...obj1,name: "王五"}console.log(obj3); //{age:20,d:时间对象,name:'王五',sex:"女"}//obj4 是obj1拷贝出来的对象,obj4和obj1是独立// ...拷贝对象的时候,value是对象也可以拷贝let obj4 = {...obj1}obj4.name = "小王"console.log(obj1);//{name:"张三"}console.log(obj4);//{name:"小王"}
}

合并数组

{// 合并数组给数组添加内容   let arr1 = [1, 2, 3]let arr2 = [3, 4, 5]let arr3 = [...arr1, ...arr2, 7, 8, 9]console.log(arr3); //[1,2,3,3,4,5,7,8,9]//push let arr4 = ['a', 'b', 'c']arr4 = ['d', ...arr4]console.log(arr4); //["d","a","b", "c"]
}

 伪数组转化为数组

//伪数组转化为数组
let btns = document.querySelectorAll("button")
let arrBtns = [...btns]

综合案例

{let workers = [{name: "小王",paid: 3000}, {name: "小李",paid: 4000}, {name: "小明",paid: 3500}, ]//map有返回值let arr = workers.map(function(item) {return {...item,paid: item.paid + 2000}})console.log(arr);}

剩余运算符和展开运算符相关推荐

  1. ES6函数第二篇:剩余参数与展开运算符的练习

    上一篇讲了剩余参数和展开运算符,这一篇来几个小练习巩固一下吧 首先明确一点,展开运算符实现的克隆是浅克隆,即若克隆引用值,实际克隆的是它的地址,举个栗子叭 [例1] const obj = {name ...

  2. 20181210-es6(letconst解构模版字符串原理 展开运算符、剩余运算符运用 深拷贝原理 reduce原理 箭头函数)...

    变量声明 var 特点: 1.可以重复声明 2.不能定义常量 3.不支持块级作用域 复制代码 let //1.不存在预解释 变量提升 //2.暂时性死区 //3.具备块级,同一块内不能重复声明;let ...

  3. 06-ES6语法:展开运算符

    本文我们介绍ES6的展开运算符.展开运算符(spread operator)允许一个表达式在某处展开.展开运算符在多个参数(用于函数调用)或多个元素(用于数组字面量)或者多个变量(用于解构赋值)的地方 ...

  4. web前端技术分享:es6展开运算符概念和使用!

    对于数组的处理,开发者不断的在创造更好的方式,而在ES2015(ES6) 新增了一种基本运算符--展开运算符.使用三个点 - 表示,它的作用是在调用函数.数组构造时将数组表达式或字符串在语法层面进行展 ...

  5. ES6展开运算符(...)

    这是在网上看见的es6展开运算符的总结,原文地址:http://www.jianshu.com/p/c5230c11781b 作者:可木Changer 链接:http://www.jianshu.co ...

  6. 6. 函数参数 与 展开运算符

    1.函数参数 a. function test(word){ console.log(word); }test('hello word'); b. function test(word = 'hell ...

  7. es6笔记2之解构赋值,rest和展开运算符

    1.数组解构 var arr=[1,2,3] var [a,b,c]=arr 然后就可以给abc分别赋对应的值 应用场景: 1.1  var [x,y]=[y,x]  变量互换 1.2  字符串解构  ...

  8. es6 ...展开运算符

    展开运算符,目前应用在数组上,对象展开运算符,将在es7 提案 1.两个对象连接返回新的对象 let a = {aa:'aa'} let b = {bb:'bb'} let c = {...a,... ...

  9. ES6中展开运算符的深拷贝浅拷贝理解(ElementUI表格点击编辑,模态框内容与表格数据一起变的问题)

    项目中遇到的问题: 在elementui中表格点击按钮传值的时候,通过bus中的$emit传对象,在弹出的模态框中用bus的$on接收对象,然后对传的对象进行改变,结果发现改变了原表格的数据. 然后就 ...

最新文章

  1. 记录git命令:本地创建项目后如何上传到github上
  2. C++ 简单实现基数排序(list容器)
  3. Postman图片上传用法以及Required request part file is not present的解决方法
  4. 新浪邮箱文件下载php,免费邮箱大全收集-国内篇
  5. python试卷河南理工大学官网_河南理工大学试卷模板
  6. 我能为IT行业做什么
  7. JS 数字,金额 用逗号 隔开(数字格式化)
  8. Java字符和数字列对齐_字符串(包含中英文、数字、符号)的对齐
  9. Nide.js安装配置
  10. 如何在Web of Science上免费下载文献
  11. 米勒-拉宾素性检测算法
  12. java流星雨代码_流星雨代码
  13. 51单片机设计简易计算机原理,基于AT89C51单片机简易计算器的设计(DOC).docx
  14. 【API接口】接口上线下线 用户在线测试,和管理员发布api待完善...
  15. 计算机类基金有哪些2019,2019年度国家自然科学基金最终立项数据,哪些高校表现突出?...
  16. 机器视觉 | 光源照明综述(详细版)
  17. 数据结构之串、数组和广义表的相关实现(C语言)
  18. PPTP连接时常见拨号错误提示原因及解决办法
  19. Effective FPV for verification 形式验证 第6章
  20. excel定位求和技巧:如何对流水账进行快速日结汇总

热门文章

  1. 第六章 网络学习相关技巧2(权重设置)
  2. Movie Database(电影数据库)
  3. 风云防火“强”为你打造出坚实系统(转)
  4. 红楼梦人物出场顺序统计
  5. Java画图板界面上的添加
  6. 关于巴伦——Marchand巴伦
  7. 用时序模型预测明天的股票价格
  8. 5.2.6UART寄存器编程(下)
  9. 自动驾驶地图数据传输协议ADASISv3介绍
  10. VS2015新建MFC工程默认存储位置,默认位置修改