ES6之 变量的解构赋值 ➕ 扩展运算符(…)

ES6之 变量的解构赋值 ➕ 扩展运算符

  • 1. 变量的解构赋值
    • 1.1 直接解构赋值
    • 1.2 解构赋值——修改属性名
    • 1.3 连续解构赋值
  • 2. 扩展运算符
    • 2.1 简介(官网)
    • 2.2 应用例子
      • 2.2.1 简单例子1
      • 2.2.2 数组拷贝
      • 2.2.3 连接多个数组
      • 2.2.4 拷贝对象(多层和多维数组一样)
      • 2.2.5 合并对象
      • 2.2.6 关于展开对象(jsx)

1. 变量的解构赋值

1.1 直接解构赋值

  • 一看就懂,代码如下:

    <script>console.log("=======1.数组的解构=======");const DOG_NAMES = ['麦兜','泡泡','贝塔'];let [mai,pao,bei] = DOG_NAMES;console.log(mai); //麦兜console.log(pao); //泡泡console.log(bei); //贝塔console.log("\n\n\n\n=======2.对象的解构=======");const dog_1 = {dogName:'麦兜',dogAge:3,dogKind:'边牧',dogSex:'女',dogPlayGames:function(){console.log('狗狗超级爱玩球。。。。');}}/*** a. 对象解构的时候,属性名要和上面声明的对象里的属性名一致* b. 即:相当于声明了几个变量,并对新声明的变量进行了赋值*/let {dogName,dogAge,dogPlayGames} = dog_1;console.log(dogName);console.log(dogAge);// dog_1.dogPlayGames();dogPlayGames();</script>
    
  • 效果如下:
    在这里插入图片描述

1.2 解构赋值——修改属性名

  • 如下:
      const dog_1 = {dogName:'麦兜',dogAge:3,dogKind:'边牧',dogSex:'女'}let {dogName:dName,dogAge} = dog_1;//dogName 改成 dNameconsole.log(dName);
    
    在这里插入图片描述

1.3 连续解构赋值

  • 如下:

       const dog_1 = {dogName:'麦兜',dogAge:3,dogKind:{kindId:'A1',kindName:'边牧'}}// let {dogName:dName,dogAge} = dog_1;// let {dogKind} = dog_1;// console.log(dogKind);// console.log(dogKind.kindName);let {dogKind:{kindId:kId,kindName}} = dog_1; //连续解构赋值console.log(kId);console.log(kindName);
    

    在这里插入图片描述

2. 扩展运算符

2.1 简介(官网)

  • 什么是扩展运算符(…运算符)?
    就是展开语法 (Spread syntax), 可以在函数调用/数组构造时,将数组表达式或者 string 在语法层面展开;还可以在构造字面量对象时,将对象表达式按 key-value 的方式展开。(译者注: 字面量一般指 [1, 2, 3] 或者 {name: “mdn”} 这种简洁的构造方式)。
  • 参考官网:
    官网-展开语法.

2.2 应用例子

2.2.1 简单例子1

  • 代码如下:
    <script>function sum_1(x,y,z){console.log(arguments);return x + y + z;}const numbers = [1,2,3];let result_1 = sum_1(...numbers);//等价于 let result_1 = sum_1(1,2,3);console.log('result_1--->'+result_1);
    </script>
    
  • 效果如下:
    在这里插入图片描述

2.2.2 数组拷贝

  • 代码如下:
     var arr_1 = ['麦兜','贝塔','泡泡'];var arr_2 = [...arr_1]; //数组拷贝console.log(arr_2);arr_2.push('西瓜');console.log(arr_2);
    
  • 效果如下:
    在这里插入图片描述
  • 需要注意的是:
    • 扩展运算符拷贝的是,浅拷贝 (只遍历一层)
      在这里插入图片描述
    • 再来个例子说明:
      在这里插入图片描述

2.2.3 连接多个数组

  • 函数写法
     let dogs = ['麦兜','贝塔','泡泡'];let cats = ['猫咪1','猫咪2'];let pets_1 = dogs.concat(cats); //使用函数 concat 连接
    
  • 扩展运算符写法
    let pets_2 = [...dogs,...cats]; //使用扩展运算符连接
    
  • 效果如下:
    在这里插入图片描述

2.2.4 拷贝对象(多层和多维数组一样)

  • 代码如下:

    console.log('\n\n\n\n=============拷贝对象===========');let user_1 = {name:'小花',age:18};let user_2 = {...user_1};
    user_2.name = '小明';console.log(user_1);
    console.log(user_2);console.log('\n\n\n\n=============拷贝对象多层===========');let pserson_1 = {name:'小花',age:18,schoolInfo:{schoolId:1001,schoolName:'XXX第一高级中学'}
    }
    let person_2 = {...pserson_1};
    person_2.name = '小刚';
    person_2.schoolInfo.schoolName = '第二中学';console.log(pserson_1);
    console.log(person_2);
    
  • 效果如下:
    在这里插入图片描述

2.2.5 合并对象

  • 第一种写法:
    let school_1 = {name:'北京大学',address:'北京'};
    let school_2 = {...school_1,name:'清华大学',createDate:'1911'}; //在copy时,修改属性以及添加属性
    
    在这里插入图片描述
  • 第二种写法:
    var obj1 = { foo: "bar", x: 42 };
    var obj2 = { foo: "baz", y: 13 };var mergedObj = { ...obj1, ...obj2 };
    // 合并后的对象:{ foo: "baz", x: 42, y: 13 }
    
    在这里插入图片描述

2.2.6 关于展开对象(jsx)

  • 单独使用原生 js 的话,对象是不能通过扩展运算符进行展开的。
  • 可以通过 jsxbabel )来展开:
    • 代码如下:
      在这里插入图片描述
      <script type="text/babel">//1. 创建组件class DogComponent extends React.Component{render(){const {dogName,dogAge,dogKind,dogDesc} = this.props;//对象的解构赋值return(<ul><li>姓名:{dogName}</li><li>年龄:{dogAge}</li><li>种类:{dogKind}</li><li>备注:{dogDesc}</li><li>备注-2{this.props.dogDesc}</li></ul>)}}//2. 定义对象const dog ={dogName:'麦兜',dogAge:3,dogKind:'边牧',dogDesc:'温柔、撒娇、粘人、偶尔调皮~'}//3. 渲染组件到页面ReactDOM.render(<DogComponent {...dog}/>,document.getElementById('dog'));</script>
      
    • 效果如下:
      在这里插入图片描述

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

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

相关文章

PhotoShop 快捷键及技巧

复制图层&#xff1a; 图层-新建-复制图层 图层上右键&#xff0c;点击复制图层 ctrlJ 删除图层&#xff1a; 选中图层&#xff0c;按del键删除图层 对图像实现自由变换&#xff1a; ctrlT 同过图像边框八个方块对图像实现大小变化 按回车键确认变换 按住shift键实现等比例…

可以用Python实现RPC协议的接口自动化测试

基于RPC协议的接口自动化测试可以用Python语言实现。下面是实现步骤&#xff1a; 1、安装依赖库&#xff0c;如protobuf、grpc。 2、编写.proto文件定义接口参数和返回值。 3、使用protoc编译.proto文件生成Python代码。 4、编写客户端代码调用远程接口进行测试。 具体实现…

数据结构-堆的实现及应用(堆排序和TOP-K问题)

数据结构-堆的实现及应用[堆排序和TOP-K问题] 一.堆的基本知识点1.知识点 二.堆的实现1.堆的结构2.向上调整算法与堆的插入2.向下调整算法与堆的删除 三.整体代码四.利用回调函数避免对向上和向下调整算法的修改1.向上调整算法的修改2.向下调整算法的修改3.插入元素和删除元素函…

操作系统——复习笔记

主要是按照王道考研408的ppt进行复习。 概述 操作系统概览 操作系统&#xff08;Operating System&#xff0c; OS&#xff09;是指控制和管理整个计算机系统的硬件和软件资源&#xff0c;并合理地组织调度计算机的工作和资源的分配&#xff1b;以提供给用户和其他软件方便的…

Unity Shader 溶解效果

一、效果图 二、原理分析 实现原理就是在片元着色器中&#xff0c;对像素点进行丢弃不显示。借助美术做的噪点图(利用噪点图中rgb中r值来做计算)。比如噪点图r值从0-1。我们从小到大让r值逐渐丢弃&#xff0c;比如刚开始r < 0.1丢弃&#xff0c;然后t < 0.2丢弃...知道t…

【牛客刷题】链表专项 Ⅱ()

合并k个有序链表 https://www.nowcoder.com/share/jump/9321389651694169697706 递归调用一下合并2个有序链表就OK&#xff1a; ListNode* merge2Lists(ListNode* pHead1, ListNode* pHead2) {ListNode* dummy new ListNode(0);ListNode* cur dummy;ListNode* cur1 pHead1;…

OpenCV(二十二):均值滤波、方框滤波和高斯滤波

目录 1.均值滤波 2.方框滤波 3.高斯滤波 1.均值滤波 OpenCV中的均值滤波&#xff08;Mean Filter&#xff09;是一种简单的滤波技术&#xff0c;用于平滑图像并减少噪声。它的原理非常简单&#xff1a;对于每个像素&#xff0c;将其与其周围邻域内像素的平均值作为新的像素值…

数据库基础——数据库、数据表和SQL语句

数据库、数据表和SQL语句 数据库、数据表和SQL语句是什么&#xff1f;数据库安装数据库登录及退出创建、查看数据库及修改名字查看及修改数据库编码删除数据库使用或查看当前正在使用的数据库创建、查看数据表及修改名字查看及修改数据表编码查看及修改数据表结构增加约束删除约…

模型训练:优化人工智能和机器学习,完善DevOps工具的使用

作者&#xff1a;JFrog大中华区总经理董任远 据说法餐的秘诀在于黄油、黄油、更多的黄油。同样&#xff0c;对于DevOps而言&#xff0c;成功的三大秘诀是自动化、自动化、更高程度的自动化&#xff0c;而这一切归根结底都在于构建能够更快速地不断发布新版软件的流程。 尽管人…

【Python程序设计】 工厂模式【07/8】

一、说明 我们探索数据工程中使用的设计模式 - 软件设计中常见问题的可重用解决方案。 以下文章是有关 Python 数据工程系列文章的一部分&#xff0c;旨在帮助数据工程师、数据科学家、数据分析师、机器学习工程师或其他刚接触 Python 的人掌握基础知识。 迄今为止&#xff0c;…

Postman接口测试流程

一、工具安装 ● 安装Postman有中文版和英文版&#xff0c;可以选择自己喜欢的版本即可。安装时重新选择一下安装路径&#xff08;也可以默认路径&#xff09;&#xff0c;一直下一步安装完成即可。&#xff08;本文档采用英文版本&#xff09;安装文件网盘路径链接&#xff1…

【分享】golang windows 运行报错 undefined: syscall.SIGUSR1

在跟着煎鱼大佬学习 Golang-gin的时候&#xff0c;"在优雅的重启服务篇" ,为了gin服务的热更新&#xff0c;采用了 endlessfresh的方案&#xff0c;安装endless后无法在windows本地调试,然后报错。 (优雅的重启服务-地鼠文档优雅的重启服务-我不怎么喜欢左写写&#…

蓝桥杯官网练习题(旋转)

题目描述 图片旋转是对图片最简单的处理方式之一&#xff0c;在本题中&#xff0c;你需要对图片顺时针旋转 90 度。 我们用一个 nm 的二维数组来表示一个图片&#xff0c;例如下面给出一个 34 的 图片的例子&#xff1a; 1 3 5 7 9 8 7 6 3 5 9 7 这个图片顺时针旋转 90 …

蓝桥杯官网填空题(振兴中华)

题目描述 本题为填空题&#xff0c;只需要算出结果后&#xff0c;在代码中使用输出语句将所填结果输出即可。 小明参加了学校的趣味运动会&#xff0c;其中的一个项目是&#xff1a;跳格子。 地上画着一些格子&#xff0c;每个格子里写一个字&#xff0c;如下所示&#xff1…

dnmp运行时404报错

dnmp运行时404报错 问题截图&#xff1a; dnmp简介 M1芯片&#xff08;Arm CPU&#xff09; 环境中搭建PHPNGINXMYSQL的利器&#xff0c;docker容器管理当前使用的软件&#xff0c;可以简单安装软件和扩展。 localhost.conf 原始文件如下&#xff1a; server {listen 8…

springmvc 获取项目中的所有请求路径

springboot/springmvc 获取项目中的所有请求路径 1. 编写业务代码 Autowiredprivate WebApplicationContext applicationContext;GetMapping("/getAllURL")public RestfulResult getAllURL() {// 获取springmvc处理器映射器组件对象 RequestMappingHandlerMapping无…

海康NVR(Network Video Recorder)启用SSH过程摸索

文章目录 海康NVR具备的特点启用SSH模式优劣比较启用SSH模式的优势启用SSH模式的坏处 Hik NVR启用SSH功能1&#xff0c;Web登录NVR2&#xff0c;SSH登录NVR SSH shell模式特点SSH shell模式指令作用1&#xff0c;简要帮助“help”可以列出常用的shell指令部分可用shell指令输出…

Android Handler 机制解析

1、前言 在 Android 开发中&#xff0c;Handler 的机制和运行原理这方面的知识可以说是每个人都需要熟悉的。这不仅是因为 Handler 是 Android 应用的基石之一&#xff0c;也因为 Handler 整体设计上也是十分优秀的。接下来我就梳理总结一下常见的 Handler 相关知识点。 2、基…

修复 ChatGPT 发生错误的问题

目录 ChatGPT 发生错误&#xff1f;请参阅如何修复连接错误&#xff01; 修复 ChatGPT 发生错误的问题 基本故障排除技巧 检查 ChatGPT 的服务器状态 检查 API 限制 检查输入格式 清除浏览数据 香港DSE是什么&#xff1f; 台湾指考是什么&#xff1f; 王湘浩 生平 …

【漏洞复现】EnjoySCM存在文件上传漏洞

漏洞描述 EnjoySCM是一款适应于零售企业的供应链管理软件,主要为零售企业的供应商提供服务。EnjoySCM的目的是通过信息技术,实现供应商和零售企业的快速、高效、准确的信息沟通、管理信息交流。。 该系统存在任意文件上传漏洞,攻击者通过漏洞可以获取服务器的敏感信息。 …