ES6之rest参数、扩展运算符

文章目录
  • 前言
  • 一、rest参数
  • 二、扩展运算符
    • 1.将数组转化为逗号分隔的参数序列
    • 2.应用
  • 总结


前言

rest参数与arguments变量相似。ES6引入rest参数代替arguments,获取函数实参。
扩展运算符能将数组转化为参数序列。


一、rest参数

		function namelist1() {console.log(arguments);}function namelist2(...args) {console.log(args);}namelist1('张三', '李四', '王五');namelist1('张三', '李四', '王五');

在这里插入图片描述
由此可看出args也是数组,所以它可以跟数组方法filter,some,map,every等连用。
注意!rest参数必须放在参数最后,如下:

	function fn(a, b, ...args) {console.log(a);console.log(b);console.log(args);}fn(1, 2, 3, 4);

二、扩展运算符

1.将数组转化为逗号分隔的参数序列

代码如下(示例):

	 	const namelist = ['张三', '李四', '王五'];function fn() {console.log(arguments);}fn(...namelist); //相当于fn('张三', '李四', '王五')console.log(namelist);console.log(...namelist);
  • 1

在这里插入图片描述

2.应用

  • 数组合并
	 	const film = ['失孤', '心灵旅途'];const tv = ['盗墓笔记', '秦岭神树'];const yule = [...film, ...tv];console.log(yule);

在这里插入图片描述

  • 数组的克隆
		const list1 = ['a', 'b', 'c'];const list2 = [...list1];console.log(list1);console.log(list2);

在这里插入图片描述

  • 将伪数组转换为真数组
	<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head><body><div>1</div><div>2</div><div>3</div><script>const divs = document.querySelectorAll('div');const divlist = [...divs];console.log(divs);console.log(divlist);</script>
</body></html>

在这里插入图片描述


ES6 引入了 rest 参数和扩展运算符,它们提供了更便捷的方式来处理函数参数和数组操作。
   Rest 参数允许将不定数量的参数表示为一个数组。在函数声明时,在最后一个命名参数之前使用三个点(...)即可表示 rest 参数。这个参数将接收传入函数的所有剩余参数,并将它们作为一个数组存储起来。

   示例:
   ```javascript
   function sum(...args) {
       return args.reduce((acc, val) => acc + val, 0);
   }

   console.log(sum(1, 2, 3)); // 输出 6
   console.log(sum(1, 2, 3, 4, 5)); // 输出 15
   ```

   在这个示例中,`...args` 将接收传入的所有参数,并将它们存储为一个数组 `args`。

2. **扩展运算符**:
   扩展运算符允许将数组展开,作为函数的参数,或者用于数组字面量和对象字面量中。

   - 在函数调用时,可以使用扩展运算符将数组中的元素作为参数传递给函数。
   - 在数组字面量中,可以使用扩展运算符将一个数组中的元素插入到另一个数组中。
   - 在对象字面量中,可以使用扩展运算符将一个对象中的属性插入到另一个对象中。

   示例:
   ```javascript
   // 函数调用时使用扩展运算符
   function multiply(x, y, z) {
       return x * y * z;
   }

   const numbers = [1, 2, 3];
   console.log(multiply(...numbers)); // 输出 6

   // 数组字面量中使用扩展运算符
   const arr1 = [1, 2, 3];
   const arr2 = [...arr1, 4, 5, 6];
   console.log(arr2); // 输出 [1, 2, 3, 4, 5, 6]

   // 对象字面量中使用扩展运算符
   const obj1 = { a: 1, b: 2 };
   const obj2 = { ...obj1, c: 3, d: 4 };
   console.log(obj2); // 输出 { a: 1, b: 2, c: 3, d: 4 }
   ```

   在这些示例中,`...` 符号用于展开数组或对象,使其能够在函数参数、数组字面量或对象字面量中以更灵活的方式使用。

总结

以上就是rest参数和扩展运算符的讲解。

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

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

相关文章

手写一个uart协议——rs232(未完)

先了解一下关于uart和rs232的基础知识 文章目录 一、RS232的回环测试1.1模块整体架构1.2 rx模块设计1.2.1 波形设计1.2.2代码实现与tb1.2.4 仿真 1.3 tx模块设计1.3.1波形设计 本篇内容&#xff1a; 一、RS232的回环测试 上位机由串口助手通过 rx 线往 FPGA 发 8 比特数据&a…

服务器数据恢复—异常断电导致RAID模块故障的数据恢复案例

服务器数据恢复环境&#xff1a; 某品牌ProLiant DL380系列服务器&#xff0c;服务器中有一组由6块SAS硬盘组建的RAID5阵列&#xff0c;WINDOWS SERVER操作系统&#xff0c;作为企业内部文件服务器使用。 服务器故障&#xff1a; 机房供电几次意外中断&#xff0c;服务器出现故…

hdfs安全模式

hdfs安全模式 1.安全模式 查看hdfs是否在安全模式&#xff1a;不能上传数据 删除 修改 但是能查看 ------------------------ $>hdfs dfsadmin -safemode enter //进入 $>hdfs dfsadmin -safemode get //查看 $>hdfs dfsadmin -saf…

【opencv4.8.1 源码编译】windows10 OpenCV 4.8.1源码编译并实现 CUDA 12加速

Windows 下使用 CMake3.29.2 Visual Studio 2022 编译 OpenCV 4.8.1 及其扩展模块cuda12.0teslaT4显卡 记录自己在编译时踩过的坑&#xff0c;避免下次再犯或者给有需要的人。 在实际使用中&#xff0c;如果是对处理时间要求比较高的场景&#xff0c;使用OpenCV处理图片数据很…

使用Gradio搭建聊天UI实现质谱AI智能问答

一、调用智谱 AI API 1、获取api_key 智谱AI开放平台网址&#xff1a; https://open.bigmodel.cn/overview 2、安装库pip install zhipuai 3、执行一下代码&#xff0c;调用质谱api进行问答 from zhipuai import ZhipuAIclient ZhipuAI(api_key"xxxxx") # 填写…

ZooKeeper 搭建详细步骤之二(伪集群模式)

ZooKeeper 搭建详细步骤之三&#xff08;真集群&#xff09; ZooKeeper 搭建详细步骤之二&#xff08;伪集群模式&#xff09; ZooKeeper 搭建详细步骤之一&#xff08;单机模式&#xff09; ZooKeeper 及相关概念简介 伪集群搭建 ZooKeeper 伪集群是指在一个单一的物理或虚拟…

【架构】后端项目如何分层及分层领域模型简化

文章目录 一. 如何分层1. 阿里规范2. 具体案例分析 二. 分层领域模型的转换1. 阿里规范2. 模型种类简化分析 三. 小结 本文描述后端项目中如何进行分层&#xff0c;以及分层领域模型简化 一. 如何分层 1. 阿里规范 阿里的编码规范中约束分层逻辑如下: 开放接口层&#xff1a…

【华为 ICT HCIA eNSP 习题汇总】——题目集19

1、&#xff08;多选&#xff09;以下选项中&#xff0c;FTP 常用文件传输类型有&#xff08;&#xff09;。 A、ASCII 码类型 B、二进制类型 C、EBCDIC 类型 D、本地类型 考点&#xff1a;应用层 解析&#xff1a;&#xff08;AB&#xff09; 文件传输协议&#xff08;FTP&…

Mybatis.net + Mysql

项目文件结构 NuGet下载Mybatis.net相关包&#xff1a;IBatisNet 安装完成后&#xff0c;会显示在&#xff0c;在已安装页面。同时&#xff0c;在管理器中的引用列表中&#xff0c;会多出来两个引用文件 IBatisNet.CommonIBatisNet.DataMapper 安装 Mysql.data。 注意&#xff…

WIN10 anaconda 安装 CondaError: Run ‘conda init‘ before ‘conda activate‘

1 下载 https://www.anaconda.com/download/success 2 安装 3 修改环境变量 安装后修改环境变量 4 winrun 进入命令窗口 输入cmd 输入 conda info 5 创建 虚拟环境 conda create -n yolov8 python3.8 -y 6 CondaError: Run ‘conda init’ before ‘conda activate’ c…

基于python+django网易新闻+评论的舆情热点分析平台

博主介绍&#xff1a; 大家好&#xff0c;本人精通Java、Python、C#、C、C编程语言&#xff0c;同时也熟练掌握微信小程序、Php和Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我有丰富的成品Java、Python、C#毕设项目经验&#xff0c;能够为学生提供各类…

掌握JavaScript面向对象编程核心密码:深入解析JavaScript面向对象机制对象基础、原型模式与继承策略全面指南,高效创建高质量、可维护代码

ECMAScript&#xff08;简称ES&#xff0c;是JavaScript的标准规范&#xff09;支持面向对象编程&#xff0c;通过构造函数模拟类&#xff0c;原型链实现继承&#xff0c;以及ES6引入的class语法糖简化面向对象开发。对象可通过构造函数创建&#xff0c;使用原型链共享方法和属…