0
In this 文章 , we are going to discuss a feature introduced in ES6 that is 点差算子 and 休息 operator. ? ? ?

I’成为三点组合的忠实拥护者,这可能会改变您解决JavaScript中问题的方式。我们可以使用三点 …有两种不同的散布算子和休息算子
其余参数
使用rest参数,我们可以将任意数量的参数收集到数组中,并使用它们进行所需的操作。引入了剩余参数以减少由参数引起的样板代码。 ?
1 2 3 4 5 6 |
功能 myFunc (a, b, ... args ) { 安慰 . 日志 (a); // 22 安慰 . 日志 (b); // 98 安慰 . 日志 ( args ); // [43,3,26] }; myFunc (22, 98, 43, 3, 26); |
在myFunc中’的最后一个参数加上前缀 …这将导致将所有剩余的参数放置在javascript数组中。
其余参数收集所有其余参数,所以没有意义吗?在最后一个参数之前添加其余参数。 休息 参数必须是最后一个形式参数。
1 2 3 |
功能 myFunc (arg1, ... 休息 , arg2) { // arg2吗? } |
其余参数可以被解构(仅限数组),这意味着它们的数据可以解压缩为不同的变量。
1 2 3 4 5 6 7 |
功能 myFunc (...[x, y, z]) { 返回 x * y* z; } myFunc (1) // NaN myFunc (1, 2, 3) // 6 myFunc (1, 2, 3, 4) // 6(第四个参数未解构) |
点差运算符 ✨
Spread运算符用于将可迭代的元素(如数组)扩展到可以容纳多个元素的位置。
1 2 3 4 5 6 7 8 9 10 11 |
功能 myFunc (x, y, ... 参数 ) { //此处使用过的rest运算符 安慰 . 日志 (x); 安慰 . 日志 (y); 安慰 . 日志 ( 参数 ); } 变种 输入 = [ “一种” , “ b” , “C” , “ d” , “ e” , “F” ]; myFunc (... 输入 ); // used 点差算子 here // “一种” //“ b” // [“ c”,“ d”,“ e”,“ f”] |
一直有各种各样的方法来组合数组,但是散布运算符为组合数组提供了一种新方法:
1 2 3 4 5 6 |
const 精选 = [ “深盘” , 意大利辣味香肠 , 夏威夷语 ]; const 专业 = [ 'Meatzza' , 辣妈 , 玛格丽塔(Margherita) ]; const 披萨 = [... 精选 , 素食比萨 , ... 专业 ]; 安慰 . 日志 ( 披萨 ); //'Deep Dish','Pepperoni','Hawaiian','veg pizza','Meatzza','Spicy Mama','Margherita' |
通过散布运算符,现在可以使用比Object.assign()短的语法进行对象的浅克隆(不包括原型)或合并。
1 2 3 4 5 6 7 8 |
变种 obj1 = { 富 : '酒吧' , x: 42 }; 变种 obj2 = { 富 : '巴兹' , y: 13 }; 变种 克隆对象 = { ...obj1 }; //对象{foo:“ bar”,x:42} 变种 合并对象 = { ...obj1, ...obj2 }; //对象{foo:“ baz”,x:42,y:13} |
? 结论
当我们看到三个点(…) in the code, it’s either 其余参数 or the 点差算子.
那里’区分它们的简单方法:
- 当三个点(…)位于函数参数的末尾,’s “rest parameters”并将其余的参数列表收集到一个数组中。
- 当三个点(…)发生在函数调用等中’s called a “spread operator”并将数组扩展为列表。
谢谢阅读。希望您喜欢本文,可以随时喜欢,评论或与朋友分享。
? 快乐编码 …
0