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

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.lryc.cn/news/511979.html

相关文章:

  • Python的简单爬虫框架
  • 使用 uni-app 开发的微信小程序中,如何在从 B 页面回来时,重新拉取数据?
  • Windows API Set:那些“只存在但不被使用“的DLL
  • 黑神话悟空鼠标光标分享
  • 编写一个简单的引导加载程序(bootloader)
  • 【Linux基础】进程(上) —— 概念、状态、优先级与环境变量
  • Rust: enum 和 i32 的区别和互换
  • 2024年终回顾
  • RGB、HSV颜色模型及MATLAB互换应用实例
  • # 【超全面了解鸿蒙生命周期】-生命周期补充
  • 黑神话悟空游戏鼠标光标使用教程与下载
  • 【机器学习】梯度下降
  • 【leetcode 07】707.设计链表
  • 【Spring】详解(上)
  • 短视频矩阵系统后端源码搭建实战与技术详解,支持OEM
  • 力扣每日刷题
  • QT的信号和槽页面的应用
  • 【Java】线程相关面试题 (基础)
  • 【数字化】华为一体四面细化架构蓝图
  • frameworks 之 WMS添加窗口流程
  • 搜索方法归类全解析
  • 第1关:简易考试系统之用户注册
  • VMware的三种网络模式——在NAT模式下开放接口为局域网内其他主机提供服务
  • 智慧地下采矿:可视化引领未来矿业管理
  • 流量主微信小程序工具类去水印
  • 代码随想录算法【Day5】
  • Leetcode 3403. Find the Lexicographically Largest String From the Box I
  • 【游戏设计原理】36 - 环境叙事
  • Python 中的 lambda 函数和嵌套函数
  • 语言模型评价指标