spread/rest 문법

hzn·2022년 9월 6일
0

JavaScript

목록 보기
7/17
post-thumbnail

Spread syntax (...)

  • 주로 배열을 풀어서 인자로 전달하거나 각각의 요소로 넣을 때 사용.
function sum(x, y, z) {
  return x + y + z;
}

const numbers = [1, 2, 3];

sum(...numbers) // 6

Rest parameters

  • 파라미터를 배열의 형태로 받아서 사용할 수 있다.
  • 파라미터 개수가 가변적일 때 유용.
  • Rest parameter는 Spread syntax를 통해 간단하게 구현된다.
function sum(...theArgs) {
  return theArgs.reduce((previous, current) => {
    return previous + current;
  });
}

sum(1,2,3) // 
sum(1,2,3,4) // 
  • reduce() : 배열의 인자를 하나씩 순회하며 콜백함수 실행해서 값을 누적한다.
    (인자로 콜백함수와 초기값을 받아오지만 여기서는 초기값이 없으므로 배열의 0번째 인덱스의 값을 초기값으로 두고 currentValue를 1번째 인덱스로 한다.

배열에서 사용하기

1. 배열 합치기

let parts = ['shoulders', 'knees'];
let lyrics = ['head', ...parts, 'and', 'toes'];

console.log(lyrics) // [ 'head', 'shoulders', 'knees', 'and', 'toes' ]
let arr1 = [0, 1, 2];
let arr2 = [3, 4, 5];
let arr3 = [...arr1, ...arr2];

console.log(arr3) // [ 0, 1, 2, 3, 4, 5 ]
console.log(arr1) // [ 0, 1, 2 ] (spread 문법은 기존 배열 변경하지 않음. immutable)

2. 배열 복사

let arr = [1, 2, 3];
let arr2 = [...arr]; // arr.slice() 와 유사
arr2.push(4);

console.log(arr2) // [1, 2, 3, 4]

객체에서 사용하기

let obj1 = { foo: 'bar', x: 42 };
let obj2 = { foo: 'baz', y: 13 };

let clonedObj = { ...obj1 };
console.log(clonedObj); // { foo: 'bar', x: 42 }

let mergedObj = { ...obj1, ...obj2 };
mergedObj //{ foo: 'baz', x: 42, y: 13 };

함수에서 사용하기 : 나머지 파라미터 받아오기

function myFun(a, b, ...manyMoreArgs) {
  console.log(a); // 'one'
  console.log(b); // 'two'
  console.log(manyMoreArgs); // ['three', 'four', 'five', 'six']
}

myFun("one", "two", "three", "four", "five", "six");
  • 나머지 파라미터들이 하나씩 들어옴.
    (...을 뗀 manyMoreArgs은 배열의 형태)

0개의 댓글