JavaScript剩余操作符Rest Operator
JavaScript剩余操作符Rest Operator
本文适合JavaScript初学者阅读
剩余操作符
之前这篇文章JavaScript展开操作符(Spread operator)介绍讲解过展开操作符。剩余操作符和展开操作符的表示方式一样,都是三个点 '…',但是他们的使用场景会不同。
剩余参数
定义函数的时候,如果函数的参数以… 为前缀,则改参数是剩余参数(rest parameter)。剩余参数表示参数个数不确定的参数列表。在函数被调用时,该形参会成为一个数组,数组中的元素都是传递给该函数的多出来的实参的值。
获取参数
剩余操作符可以用来方便地获取传进来的参数。
function sum(a,b,...args){
console.log(args.length); // 传进来的参数的个数 3
let s = a + b;
if(args && args.length){
args.forEach(i => {s += i});
}
return s;
}
sum(1, 2, 3, 4, 5 ); // 传进来的参数的个数 3
其中第一个形参a对应的是1,第二个形参b对应的2,…args表示的就是[3, 4, 5]。
和arguments的差别
上面剩余参数args是一个数组,而函数的arguments是一个伪数组。应此剩余参数可以使用数组的相关方法sort,map,forEach,pop,而arguments不能。
arguments想要变成数组,可以通过Array.prototype.slice.call方法,使用剩余操作符可以避免将arguments转为数组的麻烦。
// 下面的代码模拟了剩余数组
function sum(a,b,){
var args = Array.prototype.slice.call(arguments, sum.length);
console.log(args.length); // 传进来的参数的个数 3
let s = a + b;
args.forEach(i => {s += i});
return s;
}
sum(1, 2, 3, 4, 5 );
而使用剩余操作符,则不需要转化,直接使用,更加方便。
剩余操作符与解构赋值
我们知道,ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring)。 比如如下代码:
let array = [1,2,3]
let [a,b,c] = array; // a 1, b 2, c 3
再比如如下代码:
let obj = {a:1,b:2,c:3}
let {a,b,c} = obj; // a 1, b 2, c 3
在解构赋值时,可以使用剩余操作符。剩余操作符所操作的变量会匹配在解构赋值中所有其他变量未匹配到的属性。
比如如下代码,others会匹配到first和second对于属性的余下的属性:
const { first, second, ...others } = {
first: 1,
second: 2,
third: 3,
fourth: 4,
fifth: 5
}
first // 1
second // 2
others // { third: 3, fourth: 4, fifth: 5 }
对象中余下的属性值被打包起来构造一个新的对象赋值给了others。
数组也可以通过剩余操作符,把剩余的元素打包成一个新的数组赋值给剩余属性,代码如下:
let array = [1,2,3,4,5];
let [a,b,...c] = array; // a 1,b 2, c [3,4,5]
剩余操作符和展开操作符
某种程度上,可以任务剩余操作符是展开操作符的相反操作。展开操作符会”展开“数组编程多个元素,剩余操作符会把多个元素压缩成一个单一的元素。
原文地址https://www.cnblogs.com/flyfox1982/p/11216865.html
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
PYTHON趣用—配平化学方程式
PYTHON趣用—配平化学方程式不知不觉已经毕业多年了,不知道大家是否还记得怎么配平化学方程式呢?反正小编我是已经记不太清了,所以今天的文章除了分享如何用python配平化学方程式,顺带着还会复习 一些化学方程式的知识,希望广大化学爱好者喜欢。 1.化学方程式复习篇 1)定义 化学方程式是指用化学式表示化学反应的式子,它不仅表明了反应物、生成物和反应条件;同时,化学计量数代表了各反应物、生成物物质的量关系,通过相对分子质量或相对原子 质量还可以表示各物质之间的质量关系,对于气体反应物、生成物,还可以直接通过化学计量数得出体积比。 2)配平方法 a.最小公倍数法 操作步骤: A.找出原子个数较多,且在反应式两边各出现一次的原子,求它的最小公倍数; B.推出各分子的系数; 例如: 4P+5O2=2P2O5 第一步:P+O2—P2O5 第二步:P+5O2—2P2O5 第三步:4P+5O2—2P2O5 b.观察法 从化学式生成物中较复杂的一种推算出有关各反应物化学式的化学计量数和该生成物的化学计量数;根据求得的化学式的化学计量数,再找出其他化学式的化学计量数,直至配平。 例如: 4H2O(g)...
- 下一篇
《ElasticSearch6.x实战教程》之分词
《ElasticSearch6.x实战教程》之分词第四章-分词下雨天留客天留我不留 本打算先介绍“简单搜索”,对ES的搜索有一个直观的感受。但在写的过程中发现分词无论如何都绕不过去。term查询,match查询都与分词息息相关,索性先介绍分词。 ES作为一个开源的搜索引擎,其核心自然在于搜索,而搜索不同于我们在MySQL中的select查询语句,无论我们在百度搜索一个关键字,或者在京东搜索一个商品时,常常无法很准确的给出一个关键字,例如我们在百度希望搜索“Java教程”,我们希望结果是“Java教程”、“Java”、“Java基础教程”,甚至是“教程Java”。MySQL虽然能满足前三种查询结果,但却无法满足最后一种搜索结果。 虽然我们很难做到对于百度或者京东的搜索(这甚至需要了解Lucene和搜索的底层原理),但我们能借助ES做出一款不错的搜索产品。 ES的搜索中,分词是非常重要的概念。掌握分词原理,对待一个不甚满意的搜索结果我们能定位是哪里出了问题,从而做出相应的调整。 ES中,只对字符串进行分词,在ElasticSearch2.x版本中,字符串类型只有string,Elastic...
相关文章
文章评论
共有0条评论来说两句吧...