Rest模式和参数

展开运算符和Rest参数都是JavaScript中的语法特性,用于处理函数的参数。它们在使用方式和功能上有一些区别。
展开运算符用于将可迭代对象展开为独立的值,而Rest参数用于将多个参数收集到一个数组中。展开运算符可以用于多种上下文,而Rest参数只能作为函数的最后一个参数。

先来看一个简单的例子

const [a,b,...others] = [1,2,3,4,5];
console.log(a,b,others);
//首先,我们定义了一个包含五个元素的数组 [1, 2, 3, 4, 5]。然后,我们使用解构赋值语法将数组元素赋值给对应的变量。其中,[a, b, ...others] 表示将数组的第一个元素赋值给变量 a,第二个元素赋值给变量 b,而其余的元素将被收集到 others 数组中。最后,我们使用 console.log() 方法打印出 a、b 和 others 的值。根据给定的数组,输出将会是 1 2 [3, 4, 5]。也就是说,a 的值为 1,b 的值为 2,others 数组包含剩余的元素 [3, 4, 5]

这是一种使用解构赋值和Rest参数的写法。在给定的例子中,我们将数组 [1, 2, 3, 4, 5] 中的前两个元素分别赋值给变量 a 和 b,而剩余的元素则被收集到名为 others 的数组中。
解构赋值是一种从数组或对象中提取值并赋给变量的语法。在这种情况下,使用了数组的解构赋值,并且使用了 Rest 参数来收集剩余的元素。

我们再次以之前的对象来举例,这里不再对对象进行重写,如何需要学习可以翻看上几章的文章

const [pizza, , risotto,...others]=[...restaurant.mainMenu, ...restaurant.starterMenu];
console.log(pizza, risotto, others);

在这里插入图片描述

注:rest参数只会收集最后一个参数之后的,被跳过的被不会收集!

我们之前的有一个对象是关于工作日和周末的时间点,当然rest对于对象同样适用,如果我们想要除了周六之外的工作日时间,我们可以这么做

const {sat, ...weekdays} = restaurant.openingHours;
console.log(weekdays);

在这里插入图片描述

当然,我们也可以使用rest参数也帮我们实现一写功能上的东西,例如将给定的一串数字求和

const add = function(...numbers) {let sum = 0;for(let i = 0;i < numbers.length;i++)sum+=numbers[i];console.log(sum);
}add(2,5);
add(5,1,12,4,1);
add(5,1,5,7,1,6,5,4,1,2,3);

在这里插入图片描述

const x = [23,5,7];
add(...x);

当然,我们也可以通过展开运算符的方式去进行计算;

之前,我们使用展开运算符去给一个函数传递多个参数,当然rest也可以实现类似的功能

  orderPizza: function(mainIngredient, ...ohterIngredients) {console.log(mainIngredient);console.log(ohterIngredients);}

这是一个制作披萨的过程,需要我们给他提供一个原材料

restaurant.orderPizza('mushrooms','onion','olives','spinach');

在这里插入图片描述

这样我们也可以通过rest参数去函数传递参数,使得函数达到预期的功能!

总结

展开运算符用于将可迭代对象展开为独立的值,而Rest参数用于将多个参数收集到一个数组中。展开运算符可以用于多种上下文,而Rest参数只能作为函数的最后一个参数。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/233705.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

iOS NSDate的常用API

目录 一、创建日期 1.获取当前时间 2.当前时间指定秒数之后/前的时间 3.指定日期之后/后的时间 4.2001年之后/前指定秒数的时间 5.1970年之后/后指定秒数的时间 二、初始化日期 1.init 2.时间间指定秒数的时间 3.指定时间指定秒数之前/后的时间 4.2001年指定秒数之后…

超级利器!Postman自动化接口测试让你提升测试效率,节省宝贵时间!

Postman自动化接口测试 该篇文章针对已经掌握 Postman 基本用法的读者&#xff0c;即对接口相关概念有一定了解、已经会使用 Postman 进行模拟请求的操作。 当前环境&#xff1a; Window 7 - 64 Postman 版本&#xff08;免费版&#xff09;&#xff1a;Chrome App v5.5.3 …

如何在Docker环境下安装Firefox浏览器并结合内网穿透工具实现公网访问

文章目录 1. 部署Firefox2. 本地访问Firefox3. Linux安装Cpolar4. 配置Firefox公网地址5. 远程访问Firefox6. 固定Firefox公网地址7. 固定地址访问Firefox Firefox是一款免费开源的网页浏览器&#xff0c;由Mozilla基金会开发和维护。它是第一个成功挑战微软Internet Explorer浏…

c#把bitmap格式转换为其他格式图片

增加引用命名空间 using System.Drawing.Imaging; 打开对话框的方式读入bmp格式图片&#xff0c;转换为其他格式。 也可以直接传入图片名称。 OpenFileDialog ofd new OpenFileDialog();ofd.Title "打开对话框";ofd.InitialDirectory "D:/";ofd.Filt…

NoSQL 数据建模错误会降低性能

数据建模错误是破坏性能的最简单方法之一。当您使用 NoSQL 时&#xff0c;特别容易搞砸&#xff0c;&#xff08;讽刺的是&#xff09;NoSQL 往往用于对性能最敏感的工作负载。NoSQL 数据建模最初可能看起来非常简单&#xff1a;只需对数据进行建模以适应应用程序的访问模式。但…

初识向量数据库

背景 现在的数据分为20%的传统结构化数据&#xff0c;80%的非结构化数据 结构化数据&#xff1a;主要单元是数值与符号&#xff0c;数据类型高度抽象且易于组织。基于数值运算与关系代数&#xff0c;可以轻松地对结构化数据进行分析。 非结构化数据&#xff1a;常见的类型包括…

禁区!V社CSGO皮肤交易不可触及之红线

2013年8月13日&#xff0c;Valve通过一次版本更新向全世界发布了CS:GO的皮肤系统。自那时起&#xff0c;皮肤系统就成为CS:GO的重要组成部分&#xff0c;不仅为游戏增添了别样的特色&#xff0c;也创造了属于自己的“金融”市场。随着越来越多玩家的加入&#xff0c;皮肤市场也…

高浓度医疗废水处理工艺设备有哪些

高浓度医疗废水处理是目前环境保护领域的一个重要课题。随着医疗行业的快速发展&#xff0c;产生的医疗废水中含有大量的有害物质和病原体&#xff0c;对水资源和环境造成了严重污染威胁。因此&#xff0c;采用适当的处理工艺设备对高浓度医疗废水进行有效的处理和净化显得尤为…

Python Numpy学习(1)

python: np.pad() 函数的用法 np.einsum(爱因斯坦求和约定) python编程之np.isnan()的用法 Python_Numpy库中各种矩阵基本运算 numpy基本加减和取行操作 numpy的加减乘除运算 NumPy 算术函数 TypeError: can’t convert cuda:0 device type tensor to numpy. Use Tenso…

WPF前端实现人脸扫描动画效果

前言 本章实现的效果主要通过OpacityMask与LinearGradientBrush(径向渐变) 的组合应用来实现。最终实现效果如下: LinearGradientBrush线性渐变画刷 LinearGradientBrush其实很简单,我们只需要关注5个属性,使用这5个属性你就可以完成这个画刷几乎所有的变化。 属性介…

国标GB/T28181级联网关的具体功能

国标级联网关具有以下功能&#xff1a; 信令网关服务&#xff1a;实现多级异构平台的标准化级联/互连&#xff0c;支持信令标准化、信令控制、信令交互、信令路由等功能。安全认证&#xff1a;通过GB/T 28181标准提供的安全机制&#xff0c;确保视频监控系统的安全性和隐私保护…

深度学习毕设项目 医学大数据分析 - 心血管疾病分析

# 1 前言 &#x1f6a9; 基于大数据的心血管疾病分析 &#x1f947;学长这里给一个题目综合评分(每项满分5分) 难度系数&#xff1a;3分工作量&#xff1a;3分创新点&#xff1a;4分 1 课题背景 本项目的任务是利用患者的检查结果预测心血管疾病(CVD)的存在与否。 2 数据…