基于es6三点运算符的使用方法(实例讲解)


Posted in Javascript onOctober 12, 2017

先看一个es6规范下三点运算符的使用实例:

let fun=function(a,...list){
 console.log(a,list);
};
fun('0','a','b','c');//0 [a,b,c]

以上可以看到我们现在在定义函数对象时可以动态设置参数的个数了:第一个参数a是普通参数(忽略),

大家可以看到第二个参数list前面有三个点 “...”,这种写法在es6规范中有两个用途

1 . 作为参数使用。

2 . 作为拓展运算符使用。

● 三点--作为参数:

let fun1=function(...args){
 for(let arg of args){
  console.log(arg);
 };
 console.log(args)
};
fun1('a','b','c');//a b c,[a,b,c]
fun1(1,2);//1 2,[1,2] ...args表示了所有的形参,不管传入多少参数,都可以通过args进行遍历得到,args则集合所有的参数组成参数数组

let fun2=function(arr,...args){
 console.log(arr);
 console.log(args);
};
fun2(1,2,3);//1, [2,3]
fun2(1);//1, []当...args有其他参数时,rest参数args数组集合除去前面参数之后的参数。

let fun3=function(arr1,..args,arr2){
 console.log(args);
}//此时报错!切记,三点作为rest参数的时候,其后不能再有任何参数,只能作为最后一个角色出现!

[x,...y]=[1,2,3];
console.log(y);//[2,3]

[x,...y,z]=[1,2,3];//报错,Rest element must be last element in array

//作为参数,三点运算符可以函数,解构赋值等方面发挥重要作用。‘人如其名',rest表示剩下的,
//它把剩下的任意数量的参数推入数组,所以也继承了数组的方法。rest参数只能出现在最后一位,
//不然会报错,当然以扩展运算的身份出现时另当别论。

● 三点--作为拓展运算符使用:

let arr=[1,2,3];
console.log(...arr);//1, 2, 3返回数组中的各项

let a=[2,3];
console.log(1,...a,4);//1,2,3,4扩展运算符可以放在中间

let divs=document.querySelectorAll('div');
[...divs];//Array[300],[]可以将divs转为数组解构;
console.log(...divs);//div1,div2....遍历divs各项

let set=new Set([1,2,3,3]);
[...set];//返回数组[1,2,3],可以将set数据结构转化为数组

let map=new Map([[1,'a'],[2,'b'],[3,'c']]);
[...map.keys];//返回[1,2,3],属性数组;
[...map.values];//返回[a,b,c],value数组

[...'wbiokr'];//["w", "b", "i", "o", "k", "r"]遍历字符串,返回各个字符;

let str='abc';
['aaa',...str,'ccc'];//[aaa, a, b, c, ccc]扩展运算符位置比较任性

//三点的扩展运算符,把数组或者类数组对象展开成一系列逗号隔开的值序列,它好比rest参数时候的逆运算。

以上这篇基于es6三点运算符的使用方法(实例讲解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js 提交和设置表单的值
Dec 19 Javascript
jQuery插件的写法分享
Jun 12 Javascript
jquery仿QQ商城带左右按钮控制焦点图片切换滚动效果
Jun 27 Javascript
jquery带翻页动画的电子杂志代码分享
Aug 21 Javascript
jQuery on()绑定动态元素出现的问题小结
Feb 19 Javascript
浅谈js script标签中的预解析
Dec 30 Javascript
jQuery Masonry瀑布流布局神器使用详解
May 25 jQuery
Angular4学习之Angular CLI的安装与使用教程
Jan 04 Javascript
Vue 实现双向绑定的四种方法
Mar 16 Javascript
js中split()方法得到的数组长度问题
Jul 19 Javascript
vue绑定事件后获取绑定事件中的this方法
Sep 15 Javascript
JavaScript中的各种宽高属性的实现
May 08 Javascript
浅谈JavaScript的innerWidth与innerHeight
Oct 12 #Javascript
原生JS封装animate运动框架的实例
Oct 12 #Javascript
javascript中神奇的 Date对象小结
Oct 12 #Javascript
详解使用路由延迟加载 Angular 模块
Oct 12 #Javascript
ionic3+Angular4实现接口请求及本地json文件读取示例
Oct 11 #Javascript
js实现单张图片平移切换效果
Oct 11 #Javascript
jQuery自动或手动图片切换效果
Oct 11 #jQuery
You might like
discuz安全提问算法
2007/06/06 PHP
php学习之 循环结构实现代码
2011/06/09 PHP
基于PHP静态类的原罪详解
2013/05/06 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十三)
2014/06/26 PHP
Laravel 4.2 中队列服务(queue)使用感受
2014/10/30 PHP
windows server 2008/2012安装php iis7 mysql环境搭建教程
2016/06/30 PHP
PHP调用API接口实现天气查询功能的示例
2017/09/21 PHP
javascript 跳转代码集合
2009/12/03 Javascript
在JQuery dialog里的服务器控件 事件失效问题
2010/12/08 Javascript
JS获取页面窗口大小的代码解读
2011/12/01 Javascript
js DOM的学习笔记
2011/12/22 Javascript
jquery SweetAlert插件实现响应式提示框
2015/08/18 Javascript
基于jquery实现无限级树形菜单
2016/03/22 Javascript
Bootstrap表单布局样式代码
2016/05/31 Javascript
JS控制静态页面之间传递参数获取参数并应用的简单实例
2016/08/10 Javascript
BootStrap中的表单大全
2016/09/07 Javascript
JS实现搜索框文字可删除功能
2016/12/28 Javascript
Spring shiro + bootstrap + jquery.validate 实现登录、注册功能
2017/06/02 jQuery
ES6新增的math,Number方法
2017/08/06 Javascript
vue项目实战总结篇
2018/02/11 Javascript
vue.js使用watch监听路由变化的方法
2018/07/08 Javascript
解决vue中修改了数据但视图无法更新的情况
2018/08/27 Javascript
JavaScript学习教程之cookie与webstorage
2019/06/23 Javascript
简介Django中内置的一些中间件
2015/07/24 Python
python实现求特征选择的信息增益
2018/12/18 Python
利用ImageAI库只需几行python代码实现目标检测
2019/08/09 Python
python nmap实现端口扫描器教程
2020/05/28 Python
python list数据等间隔抽取并新建list存储的例子
2019/11/27 Python
Python通过VGG16模型实现图像风格转换操作详解
2020/01/16 Python
英国人最爱的饰品网站:Accessorize
2016/08/22 全球购物
丝芙兰巴西官方商城:SEPHORA巴西
2016/10/31 全球购物
某同学的自我鉴定范文
2013/12/26 职场文书
党支部换届选举方案
2014/05/08 职场文书
学校宣传标语
2014/06/18 职场文书
优秀应届毕业生自荐书
2014/06/29 职场文书
2014年个人年终总结
2015/03/09 职场文书