ES6扩展运算符和rest运算符用法实例分析


Posted in Javascript onMay 23, 2020

本文实例讲述了ES6扩展运算符和rest运算符用法。分享给大家供大家参考,具体如下:

运算符可以很好的为我们解决参数和对象数组未知情况下的编程,让我们的代码更健壮和简洁。

运算符有两种:对象扩展运算符与rest运算符。

ES6扩展运算符和rest运算符用法实例分析

1.对象扩展( spread)运算符(...)

(1)解决参数个数问题

以前我们编程是传递的参数一般是确定,否则将会报错或者异常,如下:

function test(a,b,c,d) {
 console.log(a)
 console.log(b)
 console.log(c)
 console.log(d)
 console.log(e)//e is not defined
}
test(1,2,3,4)

参数固定,多余的参数会出错。

但我们又想传递多个参数,但是不确定参数的个数,这时候可以使用对象扩展运算符来作参数。

function test1(...arg) {
 console.log(arg[0]);//1
 console.log(arg[1]);//2
 console.log(arg[2]);//3
 console.log(arg[3])//4
 console.log(arg[4])//5
 console.log(arg[5])//undefined
}
test1(1,2,3,4,5)

这时候程序是不会报错的,多余取值返回的结果是undefined。这说明是可以传入多个值,并且就算方法中引用多了也不会报错。

(2)解决数组赋值问题

我们先用一个例子说明,我们声明两个数组arr1和arr2,然后我们把arr1赋值给arr2,然后我们改变arr2的值,你会发现arr1的值也改变了,因为我们这是对内存堆栈的引用,而不是真正的赋值。

let arr1=['i','love','you'];
let arr2=arr1;
console.log("arr2====",arr2);
arr2.push('too');
console.log("arr1====>",arr1);

控制台输出的结果为:

["i", "love", "you"]

["i", "love", "you", "too"]

这是我们不想看到的,可以利用对象扩展运算符简单的解决这个问题,现在我们对代码进行改造。

let arr1=['i','love','you'];
let arr2=[...arr1];
console.log(arr2);
arr2.push('too');
console.log(arr1);

最终可以看到我们的arr1并没有改变,简单的扩展运算符就解决了这个问题。

2.rest运算符

(1)含义

rest参数作用: 将多余的逗号分隔的参数序列转换为数组参数

注意: rest参数必须是最后一个参数,否则报错。

rest运算符与对象扩展运算符有很多类似之处,它也用…(三个点)来表示,比如:

function test(first,...arg){
 console.log("first==>",first)//0
 console.log("arg=====>",arg)
}
test(0,1,2,3,4,5,6,7);

输出结果为:

first==> 0
arg=====>[1, 2, 3, 4, 5, 6, 7]

(2)如何循环输出rest运算符

用for…of循环来进行打印出arg的值

function test(first,...arg){
 for(let val of arg){
  console.log(val)
 }
}
test(0,1,2,3,4,5,6,7);

结果为:

1,2,3,4,5,6,7

最后总结:

  • 扩展运算符用三个点号表示,功能是把数组或类数组对象展开成一系列用逗号隔开的值
  • rest运算符也是三个点号,不过其功能与扩展运算符恰好相反,把逗号隔开的值序列组合成一个数组
  • 当三个点(...)在等号左边,或者放在形参上。为 rest 运算符
  • 当三个在等号右边,或者放在实参上,是 spread运算符

或者说:放在被赋值一方是rest 运算符。放在赋值一方式 spread运算符。

感兴趣的朋友可以使用在线HTML/CSS/JavaScript代码运行工具:http://tools.3water.com/code/HtmlJsRun测试上述代码运行效果。

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
云网广告中的代码,提示出错,大家找找
Nov 21 Javascript
JavaScript中使用构造函数实现继承的代码
Aug 12 Javascript
node.js应用后台守护进程管理器Forever安装和使用实例
Jun 01 Javascript
使用RequireJS优化JavaScript引用代码的方法
Jul 01 Javascript
js代码验证手机号码和电话号码是否合法
Jul 30 Javascript
JS简单实现多级Select联动菜单效果代码
Sep 06 Javascript
js实现的简单图片浮动效果完整实例
May 10 Javascript
jQuery Ajax和getJSON获取后台普通json数据和层级json数据用法分析
Jun 08 Javascript
JavaScript中两个字符串的匹配
Jun 08 Javascript
JS事件添加和移出的兼容写法示例
Jun 20 Javascript
Vue.js递归组件构建树形菜单
Dec 24 Javascript
vue-cli3项目展示本地Markdown文件的方法
Jun 07 Javascript
JavaScript组合设计模式--改进引入案例分析
May 23 #Javascript
JavaScript组合模式---引入案例分析
May 23 #Javascript
JavaScript设计模式--桥梁模式引入操作实例分析
May 23 #Javascript
JavaScript设计模式--简单工厂模式实例分析【XHR工厂案例】
May 23 #Javascript
JavaScript设计模式--简单工厂模式定义与应用案例详解
May 23 #Javascript
基于element-ui封装可搜索的懒加载tree组件的实现
May 22 #Javascript
微信小程序点击滚动到指定位置的实现
May 22 #Javascript
You might like
jQuery+php实现ajax文件即时上传的详解
2013/06/17 PHP
PHP记录和读取JSON格式日志文件
2016/07/07 PHP
tp5 sum某个字段相加得到总数的例子
2019/10/18 PHP
Javascript中的apply()方法浅析
2015/03/15 Javascript
10条建议帮助你创建更好的jQuery插件
2015/05/18 Javascript
jQuery实现的Div窗口震动效果实例
2015/08/07 Javascript
jquery ajax分页插件的简单实现
2016/01/27 Javascript
浅析JS动态创建元素【两种方法】
2016/04/20 Javascript
node.js cookie-parser 中间件介绍
2016/06/06 Javascript
JS仿京东移动端手指拨动切换轮播图效果
2020/04/10 Javascript
简单实现bootstrap导航效果
2017/02/07 Javascript
微信小程序之GET请求的实例详解
2017/09/29 Javascript
旺旺在线客服代码 旺旺客服代码生成器
2018/01/09 Javascript
Vue打包后出现一些map文件的解决方法
2018/02/13 Javascript
详解Element-UI中上传的文件前端处理
2019/08/07 Javascript
[06:48]DOTA2-DPC中国联赛2月26日Recap集锦
2021/03/11 DOTA
Python实现完整的事务操作示例
2017/06/20 Python
使用Python读取大文件的方法
2018/02/11 Python
Python高斯消除矩阵
2019/01/02 Python
pandas read_excel()和to_excel()函数解析
2019/09/19 Python
Python爬虫后获取重定向url的两种方法
2021/01/19 Python
Python 中Operator模块的使用
2021/01/30 Python
Lululemon英国官网:加拿大瑜伽服装品牌
2019/01/14 全球购物
Bulk Powders意大利:运动补充在线商店
2019/02/09 全球购物
西铁城美国官方网站:Citizen Watch美国
2019/11/08 全球购物
Deux par Deux官方网站:设计师童装
2020/01/03 全球购物
自行车租赁公司创业计划书
2014/01/28 职场文书
出纳工作岗位责任制
2014/02/02 职场文书
青蓝工程实施方案
2014/03/27 职场文书
让世界充满爱演讲稿
2014/05/24 职场文书
党员批评与自我批评材料
2014/10/14 职场文书
2015年新学期寄语
2015/02/26 职场文书
2015驻村干部工作总结
2015/04/07 职场文书
毕业欢送会致辞
2015/07/29 职场文书
2016猴年春节问候语
2015/11/11 职场文书
古诗文之爱国名句(77句)
2019/09/24 职场文书