rest 같은 경우에는
let array = [1,2,3,4]
let [a,b, ...rest] = array
라고 코드를 작성 할 경우
a = 1, b = 2 가 되는 것이고
rest는 나머지 값 [ 3, 4 ] 가 되는 것이다.
spread는 복사 방법이 다르다.
let person={name:"khs", age:29}
let person2 = {...person}
let person3 = person
person3 같은 경우는 person의 주소값만 복사 하는 것이고
person과 person3가 같은 곳을 바라보고 있다.
person2는 실제로 객체를 하나 더 생성시키는 것이다.
let person2 = {...person, name:"psh"}
이런식으로 기존의 name을 바꿀 수가 있다.
let a = [1,2]
let b = [...a, 3]
let c = [...a, ...b]
c의 결과 값은 [1,2,1,2,3] 이 나오게 된다.