ES6中的延展运算符,让你的代码更简化

2024-05-09 11:38

本文主要是介绍ES6中的延展运算符,让你的代码更简化,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

先来一段代码

var params=[1,23,53,8,5]
function getNumber(){
   for(var i in arguments){
   console.log(arguments[i])
}
}
getNumber(...params);//1,23,53,8,5
看了上面的代码,有没有对延展操作符有了一点基本的认识。下面我们来进一步的学习。
延展操作符

    延展操作符就是以三点开头的操作符,它已经被ES6数组支持,能解决很多之前arguments解决起来很麻烦的问题。

延展操作符有以下几方面应用:

  1.改变函数的调用

         将数组作为函数的参数传递进去的时候,通常使用的方法是function.prototype.apply,例如:

var arr=['jack','rose'];
var str=['niulang','zhinv'];
Array.prototype.push.apply(arr,str);
console.log(arr);//jack,rose,niulang,zhinv
            这样写很麻烦,有了延展操作符,它可以将数组(可遍历对象)进行展开然后作为函数的参数进行调用。
var arr=['jack','rose'];
var str=['niulang','zhinv'];
arr.push(...str);
console.log(arr);//jack,rose,niulang,zhinv
            这样写是不是既简单又易懂。
2.数组构造

             在延展运算符之前,我们如果想让一个数组成为另一个数组的一部分,需要用到之前学到的cancat,push等等。现在延展操作符允许我们简单地操作就能实现。

var arr=['jack','rose'];
var str=['niulang',...arr,'zhinv'];
console.dir(str)//['niulang','jack','rose','zhinv']
                这是数组之间的合并,还有可以快速复制数组。
var arr=[1,23,4];
var str=[...arr];//str=[1,23,4]
str.push(5);
//str=>1,23,4,5
3.数组解构
    
               除了可以快速构造数组之外,还可以用来实现数组的解构。可以用来提取数组中的部分值,并且提取的结果是一个数组对象。注意延展运算符总是应该位于解构赋值的最后一个位置。来一个栗子

var arr=['Abby', 'Andy', 'Jane', 'Tom'];
var arr_1,arr_2;
[...arr_1,arr_2]=arr;
console.dir(arr_1)//Abby,Andy Jane
console.dir(arr_2)// Tom
4.将类数组对象转换成数组
           延展运算符可以将一个类数组对象中索引范围在【0,length】之间的所有属性的值添加到一个数组中,这样可以得到一个真正的数组

var nodeList = document.querySelectorAll('div');
var array = [...nodeList];
5.React里面的延展属性
             React里面,延展运算符可以再JSX中,{...props}可以将ReactElement中的props属性展开。


var props={};
props.name='jack'
props.age=34
var component=<Component {...props}/>
同时传入对象的属性也会被复制到组件内。
它能被多次使用,也可以和其它属性一起用。注意顺序很重要,后面的会覆盖掉前面的。


var props={name:'jack'};
var component=<Component {...props} name={'rose'}/>
console.log(component.foo.name);//rose
这是我对延展运算符的几点总结,欢迎来踩。
 

这篇关于ES6中的延展运算符,让你的代码更简化的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/973312

相关文章

Java 中的 @SneakyThrows 注解使用方法(简化异常处理的利与弊)

《Java中的@SneakyThrows注解使用方法(简化异常处理的利与弊)》为了简化异常处理,Lombok提供了一个强大的注解@SneakyThrows,本文将详细介绍@SneakyThro... 目录1. @SneakyThrows 简介 1.1 什么是 Lombok?2. @SneakyThrows

Python中的Walrus运算符分析示例详解

《Python中的Walrus运算符分析示例详解》Python中的Walrus运算符(:=)是Python3.8引入的一个新特性,允许在表达式中同时赋值和返回值,它的核心作用是减少重复计算,提升代码简... 目录1. 在循环中避免重复计算2. 在条件判断中同时赋值变量3. 在列表推导式或字典推导式中简化逻辑

利用Python调试串口的示例代码

《利用Python调试串口的示例代码》在嵌入式开发、物联网设备调试过程中,串口通信是最基础的调试手段本文将带你用Python+ttkbootstrap打造一款高颜值、多功能的串口调试助手,需要的可以了... 目录概述:为什么需要专业的串口调试工具项目架构设计1.1 技术栈选型1.2 关键类说明1.3 线程模

Python Transformers库(NLP处理库)案例代码讲解

《PythonTransformers库(NLP处理库)案例代码讲解》本文介绍transformers库的全面讲解,包含基础知识、高级用法、案例代码及学习路径,内容经过组织,适合不同阶段的学习者,对... 目录一、基础知识1. Transformers 库简介2. 安装与环境配置3. 快速上手示例二、核心模

Java的栈与队列实现代码解析

《Java的栈与队列实现代码解析》栈是常见的线性数据结构,栈的特点是以先进后出的形式,后进先出,先进后出,分为栈底和栈顶,栈应用于内存的分配,表达式求值,存储临时的数据和方法的调用等,本文给大家介绍J... 目录栈的概念(Stack)栈的实现代码队列(Queue)模拟实现队列(双链表实现)循环队列(循环数组

HTML5中的Microdata与历史记录管理详解

《HTML5中的Microdata与历史记录管理详解》Microdata作为HTML5新增的一个特性,它允许开发者在HTML文档中添加更多的语义信息,以便于搜索引擎和浏览器更好地理解页面内容,本文将探... 目录html5中的Mijscrodata与历史记录管理背景简介html5中的Microdata使用M

html5的响应式布局的方法示例详解

《html5的响应式布局的方法示例详解》:本文主要介绍了HTML5中使用媒体查询和Flexbox进行响应式布局的方法,简要介绍了CSSGrid布局的基础知识和如何实现自动换行的网格布局,详细内容请阅读本文,希望能对你有所帮助... 一 使用媒体查询响应式布局        使用的参数@media这是常用的

HTML5表格语法格式详解

《HTML5表格语法格式详解》在HTML语法中,表格主要通过table、tr和td3个标签构成,本文通过实例代码讲解HTML5表格语法格式,感兴趣的朋友一起看看吧... 目录一、表格1.表格语法格式2.表格属性 3.例子二、不规则表格1.跨行2.跨列3.例子一、表格在html语法中,表格主要通过< tab

Vue3组件中getCurrentInstance()获取App实例,但是返回null的解决方案

《Vue3组件中getCurrentInstance()获取App实例,但是返回null的解决方案》:本文主要介绍Vue3组件中getCurrentInstance()获取App实例,但是返回nu... 目录vue3组件中getCurrentInstajavascriptnce()获取App实例,但是返回n

使用Java将DOCX文档解析为Markdown文档的代码实现

《使用Java将DOCX文档解析为Markdown文档的代码实现》在现代文档处理中,Markdown(MD)因其简洁的语法和良好的可读性,逐渐成为开发者、技术写作者和内容创作者的首选格式,然而,许多文... 目录引言1. 工具和库介绍2. 安装依赖库3. 使用Apache POI解析DOCX文档4. 将解析