c语言扩展运算符是什么,扩展运算符的6个重要用途
前言
由于ES6和Babel的出现,编写JavaScript代码变得难以置信的灵活,从新的语法到自定的编译器,像JSX。我变成了扩展运算符(Spread Operator)的超级粉丝,三个点就改变你编写JavaScript代码的方式。接下来的清单,列出了我在JavaScript中最喜欢怎样使用扩展运算符!
1.不使用Apply去调用函数
这一点我们叫它Function.prototype.apply,传递一个参数数组,调用一个函数,并把数组中的每一项拆分成单个参数传递给函数:function doStuff (x, y, z) { }
var args = [0, 1, 2];
// 调用函数,传递参数
doStuff.apply(null, args);
通过扩展运算符我们可以避免使用apply,只需简单的调用函数,并在参数数组前加上扩展运算符:doStuff(...args);
这让代码更简短、清晰,而且不需要无用的null!
2.合并数组
一直以来,有很多方法合并数组,但是扩展运算符给了我们全新的方法去实现合并数组:arr1.push(...arr2) // 把arr2合并到arr1的后面
arr1.unshift(...arr2) //把arr2合并到arr1的前面
如果你想在数组内合并数组,你可以像下面这样做:var arr1 = ['two', 'three'];
var arr2 = ['one', ...arr1, 'four', 'five'];
// ["one", "two", "three", "four", "five"]
比其他方法的语法更简单,还增加了位置的控制!
3.复制数组
复制数组是我们常常要做的工作,在过去,我们会使用Array.prototype.slice去实现,但现在我们可以使用扩展运算符去得到一个复制后的数组:var arr = [1,2,3];
var arr2 = [...arr]; // 就像 arr.slice()
arr2.push(4)
记住:数组仍通过指针得到,所以我们并没有复制数组本身,我们复制的只是一个新的指针。
4.把arguments或NodeList转为数组
和复制数组十分类似,我们以前使用Array.prototype.slice去把NodeList和arguments转换成真正的数组,但现在我们可以使用扩展运算符去完成这个工作:[...document.querySelectorAll('div')]
你还可以让arguments在传递时就变成一个数组:
var myFn = function(...args) {
//译者注:args等同于[...arguments]
}
别忘了,用Array.from也能达到效果。
5.使用Math函数
扩展运算符把数组”扩展”成一个个不同的参数是理所当然的,所以,可以在任何函数参数上进行扩展,而且它能接收任意多个参数:let numbers = [9, 4, 7, 1];
Math.min(...numbers); // 1
在Math对象的成员方法上使用扩展运算符是一个完美的例子,而且只需要传递一个参数。
6.有趣的结构赋值
结构赋值是一个十分有趣的实践,我在自己的React项目中大量的使用了这种技巧,还有在其他的Node.js项目中。你可以使用扩展运算符配合其他运算符一起,从变量中提取有用的信息,就像这样:let { x, y, ...z } = { x: 1, y: 2, a: 3, b: 4 };
console.log(x); // 1
console.log(y); // 2
console.log(z); // { a: 3, b: 4 }
剩下的属性会自动分配给拥有扩展运算符的变量!
总结
ES6不仅让JavaScript更复杂,也让它更有趣了。现代浏览器都支持新的ES6语法,所以,如果你还没有花时间去了解并使用它,你清楚你该怎么做。如果你要开始使用ES6,一定要来看看我的这篇文章Getting Started with ES6。不管怎样,扩展运算符都是JavaScript中一个非常有用的特性,你应该已经清楚的意识到了!
c语言扩展运算符是什么,扩展运算符的6个重要用途相关推荐
- c语言程序设计运算符及表达式,c语言程序设计3第3章运算符和表达式
1.第3章 运算符和表达式,3.1 表 达 式 3.2 运算符及表达式 3.3 运算符优先级和结合性,3.1 表 达 式,C语言的表达式分为基本表达式和复杂表达式. 基本表达式是由以下单项构成的,即: ...
- c语言程序设计运算符及表达式,C语言程序设计3第3章运算符和表达式.ppt
退出退出 第3章 运算符和表达式 3.1 表 达 式 3.2 运算符及表达式 3.3 运算符优先级和结合性 3.1 表 达 式 C语言的表达式分为基本表达式和复杂表达式. 基本表达式是由以下单项构成的 ...
- c语言作业扩展名通常为什么,C语言的源程序通常的扩展名是( )
C语言的源程序通常的扩展名是( ) 更多相关问题 [C20]A.asB.afterC.untilD.when Although I spoke to her about the matter seve ...
- c语言程序计算p q真值表,C语言程序设计第2章数据类型﹒运算符和表达式.ppt
C语言程序设计第2章数据类型﹒运算符和表达式 教学目标 掌握C语言标识符的组成 理解C语言的基本数据类型 掌握变量定义的方法 掌握常用的运算符的使用 掌握混合运算的数据转换方法 2.1 C语言的数据类 ...
- 二进制补码求值用c语言,C语言程序设计第2章数据类型.运算符与表达式.ppt
C语言程序设计第2章数据类型.运算符与表达式 教学目标 掌握C语言标识符的组成 理解C语言的基本数据类型 掌握变量定义的方法 掌握常用的运算符的使用 掌握混合运算的数据转换方法 2.1 C语言的数据类 ...
- 华农c语言计算高精度加法_考研计算机 | 运算符与表达式算术运算符
一.算术运算符与算术表达式 (一)基本的算术运算符+加法运算符,或正值运算符3+5.+3–减法运算符,或负值运算符5-2.-3* 乘法运算符3*5/除法运算符5/3%模运算符,或称求余运算符,%两侧均 ...
- 当c语言表达式中同时有字符 整数,c语言第2章数据类型、运算符与表达式a.ppt
c语言第2章数据类型.运算符与表达式a C语言程序设计;本章主要学习任务;2.1 C的数据类型;注意:C语言中的数据有变量与常量,它们分别属于上述这些类型.;2.2 常量与变量;不是C语句,不必在行末 ...
- Oracle和sql语言,SQL语言的四种类型和ORACLE运算符
数据定义语言(DDL) 数据操作语言(DML) 数据控制语言(DCL) 事务控制语言(TCL) Data Definition Language(DDL) DDL使我们有能力创建或删除表格.也可以定义 ...
- 用 Go 语言给 Lua/OpenResty 写扩展
用 Go 语言给 Lua/OpenResty 写扩展 https://www.lbbniu.com/3477.html 背景 最近的一个lua项目中需要解析wbxml,WBXML是XML的二进制表示形 ...
最新文章
- python selenium 点击开始按钮_使用Selenium和Python单击一个按钮
- 一只小蜜蜂(HDU-2044)
- Ubuntu目录结构简单介绍笔记
- 一路踩坑构建Dubbo源码
- Android 自动化测试框架简介
- 米家扩展程序初始化超时_一套完整的PLC程序是什么样子
- 格式工厂 wav 比特率_IQmango Converter下载-IQmango Converter(音视频格式转换工具)v3.4.6免费版...
- 高一计算机课程教案,高一信息技术教案第一章
- 一文解决scrapy带案例爬取当当图书
- 通用 DAO 接口设计
- 三种振幅调制AM、DSB、SSB
- 实体零售纷纷转型,苏宁、乐语到底能给我们带来哪些启示?
- Linux应用基础与实训小结
- WEB前端:(3)HTML5②超链接及页面内跳转
- 计算火车运行时间 本题要求根据火车的出发时间和达到时间,编写程序计算整个旅途所用的时间
- 路飞学城-Python爬虫实战密训-第1章
- 【面试】web前端经典面试题试题及答案-es6
- 微信小程序——背景音乐播放
- 使用matlab实现ISD悬架离散仿真分析
- 监考安排系统java代码_基于jsp的监考安排与查询-JavaEE实现监考安排与查询 - java项目源码...
热门文章
- 从第一范式(2nf)到第二范式(3nf)_啥是数据库范式
- kafka版本_Apache Kafka 版本演进及特性介绍
- php为什么查询语句加上order by就显示不出来,sql会查出结果 php页面偶尔显示空白 没有从sql得到结果...
- cmake字符串转数组_JS 数组中你或许不知道的操作
- python3 turtle 在哪下载安装_Python3 turtle安装和使用教程
- git指令如何葱master转到dev_看完这篇还不会用Git,那我就哭了
- hibernate的查询条件lt_鱼与熊掌得兼:Hibernate与Mybatis共存
- object转class_从零并发框架(三)异步转同步注解+字节码增强代理实现
- php mysql encode_PHP json_encode mysql结果
- Linux3种进程,linux内核获取进程的全路径3种方法