ES6系列_4之扩展运算符和rest运算符
时间:2022-06-19
本文章向大家介绍ES6系列_4之扩展运算符和rest运算符,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
运算符可以很好的为我们解决参数和对象数组未知情况下的编程,让我们的代码更健壮和简洁。
运算符有两种:对象扩展运算符与rest运算符。
1.对象扩展( spread)运算符(...)
(1)解决参数个数问题
以前我们编程是传递的参数一般是确定,否则将会报错或者异常,如下:
function test(a,b,c,d) {
console.log(a)
console.log(b)
console.log(c)
console.log(d)
console.log(e)//e is not defined
}
test(1,2,3,4)
参数固定,多余的参数会出错。
但我们又想传递多个参数,但是不确定参数的个数,这时候可以使用对象扩展运算符来作参数。
function test1(...arg) {
console.log(arg[0]);//1
console.log(arg[1]);//2
console.log(arg[2]);//3
console.log(arg[3])//4
console.log(arg[4])//5
console.log(arg[5])//undefined
}
test1(1,2,3,4,5)
这时候程序是不会报错的,多余取值返回的结果是undefined。这说明是可以传入多个值,并且就算方法中引用多了也不会报错。
(2)解决数组赋值问题
我们先用一个例子说明,我们声明两个数组arr1和arr2,然后我们把arr1赋值给arr2,然后我们改变arr2的值,你会发现arr1的值也改变了,因为我们这是对内存堆栈的引用,而不是真正的赋值。
let arr1=['i','love','you'];
let arr2=arr1;
console.log("arr2====",arr2);
arr2.push('too');
console.log("arr1====>",arr1);
控制台输出的结果为:
["i", "love", "you"]
["i", "love", "you", "too"]
这是我们不想看到的,可以利用对象扩展运算符简单的解决这个问题,现在我们对代码进行改造。
let arr1=['i','love','you'];
let arr2=[...arr1];
console.log(arr2);
arr2.push('too');
console.log(arr1);
最终可以看到我们的arr1并没有改变,简单的扩展运算符就解决了这个问题。
2.rest运算符
(1)含义
rest参数作用: 将多余的逗号分隔的参数序列转换为数组参数
注意: rest参数必须是最后一个参数,否则报错。
rest运算符与对象扩展运算符有很多类似之处,它也用…(三个点)来表示,比如:
function test(first,...arg){
console.log("first==>",first)//0
console.log("arg=====>",arg)
}
test(0,1,2,3,4,5,6,7);
输出结果为:
first==> 0
arg=====>[1, 2, 3, 4, 5, 6, 7]
(2)如何循环输出rest运算符
用for…of循环来进行打印出arg的值
function test(first,...arg){
for(let val of arg){
console.log(val)
}
}
test(0,1,2,3,4,5,6,7);
结果为:1,2,3,4,5,6,7
最后总结:
扩展运算符用三个点号表示,功能是把数组或类数组对象展开成一系列用逗号隔开的值
rest运算符也是三个点号,不过其功能与扩展运算符恰好相反,把逗号隔开的值序列组合成一个数组
当三个点(...)在等号左边,或者放在形参上。为 rest 运算符
当三个在等号右边,或者放在实参上,是 spread运算符
或者说:放在被赋值一方是rest 运算符。放在赋值一方式 spread运算符。
- 使用shell来定制dbms_sqltune(r7笔记第39天)
- 简单易学的机器学习算法——分类回归树CART
- Java设计模式-状态模式
- DBA和开发同事的一些代沟(四) (r7笔记第36天)
- python获取文件所在目录和文件名,以及检索当前文件名的方法
- 数据同步中的误导(r7笔记第34天)
- java读取xml文件
- 优化算法——粒子群算法(PSO)
- Java开发画板
- Python—numpy模块下函数介绍(一)numpy.ones、empty等
- Tomcat用户权限设置
- 优化算法——模拟退火算法
- 绘制动态心形图案::R语言绘制心形图
- 物化视图中的统计信息导致的查询问题分析和修复 (r7笔记第47天)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法