JS中的扩展运算符(...)和剩余运算符(...)
一、概念
在JS中,扩展运算符(spread)是三个点 (...)
,剩余运算符(rest)也是三个点 (...)
二、扩展运算符
(1)基本使用:扩展运算符的主要作用是将一个数组转为用逗号分隔的参数序列,它好比 rest 的逆运算
//传递数据代替多个字符串的形式 function test(a,b,c){ console.log(a); // 1 console.log(b); // 2 console.log(c); // 3 } var arr = [1, 2, 3]; test(...arr); //将一个数组插入到另一个数组中 var arr1 = [1,2,3]; var arr2 = [...arr1, 4, 5, 6]; console.log(arr2); // [1, 2, 3, 4, 5, 6] //字符串转数组 var str = 'hello'; var arr3 = [...str]; console.log(arr3); // ["h", "e", "l", "l", "o"]
(2)扩展运算符(…)会调用默认的 Iterator
接口。
// 例一 var str = 'hello'; [...str] // ['h','e','l','l','o'] // 例二 let arr = ['b', 'c']; ['a', ...arr, 'd'] // ['a', 'b', 'c', 'd']
上面代码的扩展运算符内部就调用 Iterator 接口。
实际上,这提供了一种简便机制,可以将任何部署了 Iterator 接口的数据结构,转为数组。也就是说,只要某个数据结构部署了 Iterator 接口,就可以对它使用扩展运算符,将其转为数组。
let arr = [...iterable];
3)由于扩展运算符可以展开数组,所以可以用来替代函数的 apply
方法
// ES5 的写法 function f(x, y, z) { // ... } var args = [0, 1, 2]; f.apply(null, args); // ES6 的写法 function f(x, y, z) { // ... } let args = [0, 1, 2]; f(...args);
下面是扩展运算符取代 apply
方法的一个实际的例子,应用 Math.max
方法,简化求出一个数组最大元素的写法。
// ES5 的写法 Math.max.apply(null, [14, 3, 77]) // ES6 的写法 Math.max(...[14, 3, 77]) // 等同于 Math.max(14, 3, 77);
三、剩余运算符
把用逗号隔开的值序列组合成一个数组
//当函数参数个数不确定时,用 rest运算符 function f1(...args) { console.log(args); // [1,2,3] } f1(1,2,3); //当函数参数个数不确定时的第二种情况 function f2(item, ...arr) { console.log(item); // 1 console.log(arr); // [2,3] } f2(1, 2, 3); //rest运算符配合 解构使用 let [a,...temp]=[1, 2, 4]; console.log(a); // 1 console.log(temp); // [2,4]
四、总结
扩展运算符(spread)用三个点号表示,功能是把数组或类数组对象展开成一系列用逗号隔开的值。
剩余运算符(rest)也是三个点号,不过其功能与扩展运算符恰好相反,把逗号隔开的值序列组合成一个数组。
当三个点(…)在等号左边,或者放在形参上,为 rest 运算符
当三个在等号右边,或者放在实参上,是 spread运算符
或者说:放在被赋值一方是rest 运算符。放在赋值一方式 spread运算符。
————————————————
版权声明:本文为CSDN博主「webchang」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_43974265/article/details/113030814
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)