Spread Operator 與 Rest Parameters 與 Default Parameters


Posted by cmtilo on 2021-05-03

把東西展開:Spread Operator

... 展開運算子,複製一份過去
例1

var arr = [1,2,3]
var arr2 = [4, ...arr ,5,6]

例2

var obj1 = {
  a:1,
  b:2
}
var obj2 = {
  z:1
}
var obj3 = {
  b:3,
  ...obj1 //但放在後面會把原本的 b 蓋掉所以 b 會變 2
}

「反向」的展開:Rest Parameters

...rest意思是剩下的集結收起來

例1

var arr = [1,2,3,4]
var [first, ...rest] = arr
console.log(rest) 
//[2,3,4]

例2

var obj = {
 a:1,
 b:2,
 c:3
}
var {a, ...obj2} = obj
console.log(a, obj2) 
//1 {b:2,c:3}

例3

var obj = {
 a:1,
 b:2,
}
var obj2 = {
 ...obj,  //此處...展開
 c:3,
}
var {a, ...rest} = obj2  //此處...集合
console.log(rest) 
//{b:2,c:3}

例4

function add (...args) {
 console.log(args) 
 return args[0] + args[1]
}
console.log(add(1,2)) 
//[1,2]
//3

function add (a, ...args) {
 console.log(args) 
 return a + args[1]
}
console.log(add(1,2)) 
//[2]
//3

加上預設值:Default Parameters

預設參數(Default parameters) 函式預設參數允許沒有值傳入或是傳入值為 undefined 的情況下,參數能以指定的預設值初始化。
—MDN

例1

function repeat(str='hello', times = 5) {
 return str.repeat(times)
}
console.log(repeat()) 
//hellohellohellohellohello

例2

const obj = {
 a:1
}
const {a=123, b='hello'} = obj
console.log(a,b) 
//1 'hello'

#spreadoperator #restparameters #defaultparameters







Related Posts

Eclipse編輯窗口的奇怪字符

Eclipse編輯窗口的奇怪字符

留言板、新增功能篇--(分頁)

留言板、新增功能篇--(分頁)

19. Memento

19. Memento


Comments