Day06【JS】「...」展开运算符 & 其余运算符

「展开运算符」与「其余运算符」,
两者的表示方式都是 ...
以下分别说明。

展开运算符

展开运算符(Spread Operator)

  • 用来解压缩阵列,把一个阵列展开成个别值
  • 属於阵列的浅拷贝
  • 在「阵列字面定义」与「函式呼叫」时使用
  • 能够把「可迭代(iterable)」或「伪阵列(Array-like)」的物件转变为阵列
    • 可迭代物件:String、Array、TypedArray、Map、Set
    • 伪阵列物件:函式的「arguments」

建议使用展开运算符取代以下语法

  • Array.prototype.concat()
  • Object.assign()

范例:

const todos =["aaa","bbb","ccc"]

//使用展开运算符
const addTodos =[...todos, "ddd"];
//等同於
const addTodos = todos;
addTodos.push("ddd");

特殊用法:

function sum(a, b, c) {
  return a + b + c
}
const args = [1, 2, 3]
sum(…args) // 6

其余运算符

其余运算符(Rest Operator)

  • 在「函式传入参数定义」与「解构赋值(destructuring)」时使用
  • 若没有传入实际值,会成为一个空阵列
  • 其余运算符必定位於最後一位,并且只能使用一次

其余参数 Rest parameters

将函式参数「剩余的值」组合成一个阵列

  • 建议使用其余运算符来代替函式中的 arguments 物件
  • 其余参数在传入参数定义中,

解构赋值 destructuring

const [x, ...y] = [1, 2, 3]

console.log(x) //1
console.log(y) //[2,3]

等号左右个数不相等时,会成为空阵列

const [x, y, ...z] = [1]

console.log(x) //1
console.log(y) //undefined
console.log(z) //[]

参考资料


<<:  Day 10 Template message in Messaging API

>>:  30-7 之分层架构 From Patterns of Enterprise Application Architecture

关於补数与二进位运算

补数为何存在? 为了将减法以加法的形式进行实作,减少电路开销(省去减法器)。 补数的讨论 一般来说,...

【Day 26】SwiftUI - Drawing and Animation

Drawing and Animation - Animating Views and Transi...

ESP32_DAY7 介绍ESP32

终於要开始介绍ESP32了!前几天都在慢慢地舖成,就是为了这次的主角ESP32,但可能大家会觉得很纳...

Day 17 : PHP - MySQLi的面向过程和面向对象是什麽?又该如何做选择?

如标题,这篇想和大家聊聊MySQLi的「面向过程」和「面向对象」是什麽 我当初在学这里时,这个问题困...

Day19:终於要进去新手村了-javascript-回圈-break、continue

回圈的概念是满足设定的条件後一直执行设定好的程序码,但是还是有方式可以让回圈强制跳出整个回圈或是跳出...