当前位置: 首页 > article >正文

E6 中的 扩展运算符(Spread) 和 剩余运算符(Rest)

时间:2024.12.29

之前看到 Es6 中的 三点运算符,有如下的几种写法,有时候三点运算符放在左边,有时候三点运算符放在右边,老是混淆。今天记录下,加强理解。

image-20241229160851799

先看一个问题

最近在看 《ECMAScript 6 入门》关于扩展运算符章节的的时候,有一些疑问。

文章链接:扩展运算符的应用–与解构赋值结合

  • 问题 1:
const a1 = [1, 2];
// 写法一
const a2 = [...a1];
// 写法二
const [...a2] = a1;

image-20241229192205040

将这个问题,抛给 chatGPT ,回复如下:

image-20241229192604110

  • 问题 2
const [first, ...rest] = [1, 2, 3, 4, 5];
first; // 1
rest; // [2, 3, 4, 5]

image-20241229185753337

将上面的问题抛给 chatGPT ,给出的回答如下:

image-20241229190035354

有大佬知道的,请不吝告知。

扩展运算符(Spread)

  • 定义:将数组或对象展开为多个元素
  • 用途:函数调用、数组和对象中的元素展开

用法示例

  • 数组展开
const arr1 = [1, 2];
const arr2 = [3, 4, ...arr1];
// arr2 =  [3,4,1,2]
  • 对象展开
const obj1 = { name: "孙悟空" };
const obj2 = { age: 18, ...obj1 };
// obj2 = {age: 18,name: "孙悟空"}
  • 函数调用的参数
function sum(x, y, z) {
  return x + y + z;
}
const nums = [1, 2, 3];
sum(...nums);

image-20241229161310692

剩余运算符(Rest)

  • 定义:将多个参数收集到一个数组(对象)中
  • 用途:函数定义、数组解构、对象解构
  • 注意:只能是最后一个参数,否则会报错

用法示例

  • 数组解构
let [head, ...tail] = [1, 2, 3, 4];
head; // 1
tail; // [2, 3, 4]

image-20241229132543328

  • 对象解构
let { x, y, ...z } = { x: 1, y: 2, a: 3, b: 4 };
x; // 1
y; // 2
z; // { a: 3, b: 4 }

image-20241229161934827

  • 函数定义的参数
function add(...values) {
  let sum = 0;

  for (var val of values) {
    sum += val;
  }

  return sum;
}

add(2, 5, 3); // 10

image-20241229140411116

总结

特性扩展运算符(Spread)剩余运算符(Rest)
定义将数组或对象展开为多个元素将多个参数收集到一个数组(对象)中
用途用于函数调用、数组和对象中的元素展开用于函数定义、数组解构 、对象解构
注意--

注意

  • 剩余运算符(Rest),只能是最后一个参数,否则会报错

2024.12.29 0208


http://www.kler.cn/a/457464.html

相关文章:

  • 游戏陪玩系统:国际版JAVA游戏陪玩系统源码陪练APP源码H5源码电竞系统源码支持Android+IOS+H5
  • 最新常见的图数据库对比,选型,架构,性能对比
  • 大数据技术-Hadoop(二)HDFS的介绍与使用
  • 深度学习笔记(6)——循环神经网络RNN
  • 折腾日记:如何让吃灰笔记本发挥余热——搭建一个相册服务
  • 工程师如何平衡工作和生活?
  • redis开发与运维-redis04-redis客户端Jedis与连接池及客户端异常模拟
  • python学习笔记——类和对象
  • 道路倒角 三角网 两侧偏移
  • 2025最新植物大战僵尸杂交版3.0.2版本
  • 埃斯顿机器人程序案例多个点位使用变量
  • 微服务架构与 Spring Cloud 相关技术解读
  • 程序猿成长之路之设计模式篇——结构型设计模式
  • C 中如何在For中生成不重复的随机数
  • 【Chrome】浏览器提示警告Chrome is moving towards a new experience
  • 邮件传输协议
  • Linux系统编程(一)--基础指令
  • 【Spring】基于注解的Spring容器配置——基于Java类的配置(@Configuration与@Bean)
  • 【MySQL篇】使用Java操作MySQL实现数据交互
  • 基于python的ai五子棋游戏