当前位置: 首页 > 编程笔记 >

ES6扩展运算符和rest运算符用法实例分析

能文华
2023-03-14
本文向大家介绍ES6扩展运算符和rest运算符用法实例分析,包括了ES6扩展运算符和rest运算符用法实例分析的使用技巧和注意事项,需要的朋友参考一下

本文实例讲述了ES6扩展运算符和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运算符。

感兴趣的朋友可以使用在线HTML/CSS/JavaScript代码运行工具:http://tools.jb51.net/code/HtmlJsRun测试上述代码运行效果。

更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《javascript面向对象入门教程》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》

希望本文所述对大家JavaScript程序设计有所帮助。

 类似资料:
  • 我不确定我在这里使用的词汇,如果我错了,请纠正我。 在Javascript中,我有以下代码: 如您所见,当调用时,我可以使用spread运算符,以便将我的参数“转换”为。 现在,我正试图用Java做同样的事情。 假设我有一门课: 现在我想调用: 我想使用类似于的东西,而不是调用。 我在函数声明中看到了这一点,但我不想改变这样一个函数的实现。

  • 为什么一定要使用 ...path 才能正确的运行,在上面代码中测试的结果是一样的,而下面则一定要用 ... ?否则就会出现如图2所示的结果 这段代码是 解决 (给定两个整数 n 和 k,返回范围 [1,n] 中所有可能的 k 个数的组合。) 这个问题的 ,用的回溯

  • 主要内容:1.运算符类型可以将操作符定义为告诉系统实施特定操作的符号。 在JavaScript中,有很多运算符,通过使用特定的运算符,可以执行任何特定的任务。运算符在表达式中用于评估不同的操作数。 表达式是一种返回值的语句,表达式包括: 运算符:它负责对操作数执行一些运算。 操作数:它代表数据。 例如:假设像这样的表达式。 在此表达式中,和是操作数,星号()符号是乘法运算符。 1.运算符类型 JavaScript中的运算

  • 本文向大家介绍C#运算符重载用法实例分析,包括了C#运算符重载用法实例分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#运算符重载用法。分享给大家供大家参考。具体分析如下: 希望本文所述对大家的C#程序设计有所帮助。

  • 主要内容:1.散布运算符和数组操作,2.散布运算符和字符串ES6引入了一个称为散布运算符的新运算符,它由三个点()组成。 它允许迭代器在期望参数超过零的地方扩展。 它赋予从数组中获取参数的特权。 传播()运算符的语法与参数相似,但是完全相反。 让我们了解一下散布运算符的语法。 语法 上面语法中的三个点()是散布运算符,其目标是特定变量中的整个值。 让我们尝试了解散布运算符在不同情况下的用法: 1.散布运算符和数组操作 下面来看看如何使用散布运算符来操纵数

  • 我在React应用程序中注意到以下内容: 什么是在这里做什么?我知道它正在将子级传递给UserList组件,但是传播运算符在这里是如何工作的呢?它与和有什么交互作用?