Javascript

[Javascript] Spread 연산자와 Rest 매개변수

mm_스터디 2024. 5. 16. 18:51
728x90

 

Spread 연산자

 

...배열이나 객체이름

 

흩뿌리다, 펼치다 라는 뜻으로 객체나 배열에 저장된 여러개의 값을 개별로 흩뿌려주는 역할을 한다

 


let color = ['red' , 'blue' , 'green'];
let animal = ['cat' , 'dog' , 'mouse'];

 

이때 cat, dog 사이에 color를 넣고 싶다면

원래는 

 animal  = ['cat' , color[0], color[1], color[2], 'dog' , 'mouse' ]; 로 직접 넣어줬어야함

 

근데 이렇게 하면 문제가 발생할 확률이 높음
 → 배열의 값이 추가되거나 삭제가 되면 내가 원했던 결과와 다르게 나올 수 있음

 

그래서  Spread 연산자를 이용해 간단하고 안전하게 다루기 가능

 

let color = ['red' , 'blue', 'green'];
let animal = ['cat' , 'dog' , 'mouse'];

 

 animal  = ['cat' , ...color ,'dog' , 'mouse' ]; 

console.log(animal); 

→ 결괏값: (6) ['cat', 'red', 'blue', 'green', 'dog', 'mouse']

 

 

객체도 똑같이 사용

let fruit1 = {
  a: lemon,
  b: grape,
};

 

let fruit2 = {
  c: mango,
  d: apple,
};

 

일때 fruit2 c 앞에 fruit1를 넣고 싶다면

 

fruit2 = {

  ...fruit1,
  c: mango,
  d: apple,
};

 

함수호출할 때도 Spread 유용하게 사용가능함

 

function funcA(p1, p2, p3) {
  console.log(p1, p2, p3);
}
funcA(...fuirt1);

 

Rest 매개변수

 

...Rest매개변수로 쓸 변수이름

 

Rest 나머지라는 뜻으로, 나머지 매개변수 의미

여러개의 매개변수를 받아야할 때 배열 형태로 한번에 여러개의 매개변수를 받아올 수 있도록 함

 

Rest 변수의 이름은 아무거나 원하는대로 정해도 됨 그러나 맨 마지막에 써야하고 앞에 ...꼭 써줘야함
이 때 ...은 앞의 Spread 연산자와 아에 다른 것

 

 

function funcB(...restVar) {
  console.log(restVar );
}
funcB(...fruit1);

 

이때 할당될 변수의 이름을 주고 싶다면

function funcB(줄 변수이름, ...rest) {
  console.log(rest);
  console.log(줄 변수이름);
}

 

 

 

728x90