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,一经查实,立即删除!

相关文章

可以用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…

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

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

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

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

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;在代码中使用输出语句将所填结果输出即可。 小明参加了学校的趣味运动会&#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…

海康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指令输出…

修复 ChatGPT 发生错误的问题

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

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

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

【C#项目实战】控制台游戏勇士斗恶龙(1)——游戏初始设置以及开始界面

君兮_的个人主页 即使走的再远&#xff0c;也勿忘启程时的初心 C/C 游戏开发 Hello,米娜桑们&#xff0c;这里是君兮_&#xff0c;最近开始正式的步入学习游戏开发的正轨&#xff0c;想要通过写博客的方式来分享自己学到的知识和经验&#xff0c;这就是开设本专栏的目的。希望…

老太太阿姨收割机秀才被封

除了他自己和平台官方&#xff0c;恐怕没有人知道详细数字&#xff0c;不过坊间流传着一句话&#xff0c;叫“秀才和一笑倾城一场直播&#xff0c;就可以榨光一个省的老人低保 可见吸金是有多么恐怖 一笑倾城是秀才的“姊妹篇”&#xff0c;秀才专供老太太&#xff0c;一笑倾城…

uni-app:自带的消息提示被遮挡的解决办法(自定义消息提示框)

效果&#xff1a; 代码&#xff1a; 1、在最外层或者根组件的模板中添加一个容器元素&#xff0c;用于显示提示消息。例如&#xff1a; <div class"toast-container" v-if"toastMessage"><div class"toast-content">{{ toastMessa…

EMERSON A6500-CC 机架接口模块 AMS参数

EMERSON A6500-CC 机架接口模块 AMS参数 ModBus和机架接口模块设计用于工厂的高可靠性 最关键的旋转机械。它从所有AMS A6500 ATG模块读取参数 并通过ModBus TCP/IP和/或ModBus RTU&#xff08;串行&#xff09;输出这些参数。 此外&#xff0c;OPC UA可用于向第三方系统传输数…

华为Mate 60和iPhone 15选哪个?

最近也有很多朋友问我这个问题来着&#xff0c;首先两款手机定位都是高端机&#xff0c;性能和体验各有千秋&#xff0c;各自有自己的铁杆粉。 但是让人意想不到的是华为mate60近日在海外越来越受欢迎和追捧&#xff0c;甚至是引起了不少人的抢购&#xff0c;外观设计和…

C/C++操作加密与不加密的zip文件

为了后续的方便操作zip文件&#xff0c; 将所有的操作封装成了一个动态库了。 /*** \description 从压缩包文件中解压出指定的文件到指定的目录.* \author sunsz* \date 2023/09/09**/ LIBZIP_API int UnpackFile(const char* password, char zipfilename[], char filename_…

如何使用ArcGIS去除卫星影像上的云

虽然目前发布的地图都是对云量进行过筛选&#xff08;一般低于20%&#xff09;&#xff0c;但是还是有可能会遇到有云的情况&#xff08;特别是下载历史影像的时候&#xff09;&#xff0c;那么这些云应该怎么去除呢&#xff0c;我们可以尝试使用ArcGIS进行处理。 识别像素 将…