ES6 - Rest 파라미터

Boseong Choi·2023년 4월 27일
0

JavaScript

목록 보기
5/10
post-thumbnail

Rest 파라미터란?

Rest 파라미터(나머지 매개변수)는 파리미터 이름 앞에 ...을 붙여서 정의한 파라미터를 의미한다. Rest 파라미터는 함수에 전달된 파라미터들의 목록을 배열로 전달받는다. 함수의 파라미터를 정의하는 방법 중 하나이다.


Rest 파라미터를 쓰는 이유

Rest 파라미터를 쓰면 전달된 파라미터들을 배열([])로 감싸주기 때문에 파라미터의 개수가 가변적일 때 유연하게 대처하기 위해서다.

function sum(a, b, c) {
  return a + b + c;
}

위 함수는 파라미터를 3개만 받아들이는 함수다. 따라서 아래와 같은 방법으로만 호출할 수 있다.

sum(1, 2, 3); // 6

하지만 파라미터의 개수를 미리 알 수 없다면 Rest 파라미터를 사용하여 다음과 같이 함수를 작성할 수 있다.

function sum(...numbers) {
  let result = 0;
  for (let i = 0; i < numbers.length; i++) {
    result += numbers[i];
  }
  return result;
}

위 함수는 Rest 파라미터를 이용하여 인자를 배열 형태로 감싼다. 이렇게 하면 파라미터 개수에 제한이 없어지므로, 아래와 같이 다양한 파라미터의 개수를 받아들일 수 있다.

sum(1, 2, 3); // 6
sum(4, 5, 6, 7, 8); // 30
sum(10, 20); // 30

Rest 파라미터 사용 시 주의사항

  1. Rest 파라미터는 반드시 마지막 파라미터이어야 한다.
    항상 파라미터가 여러개면 rest는 마지막 파라미터로 넣어야 한다.
function foo( ...rest, param1, param2) { }

foo(1, 2, 3, 4, 5); // SyntaxError: Rest parameter must be last formal parameter
  1. Rest 파라미터를 2개 이상 사용할 수 없다.
function foo2(a, ...param1, ...param2){
  console.log(파라미터들) 
}

Rest 파라미터 / Arguments

Rest 파라미터와 Arguments는 함수의 파라미터를 다루는 데 사용되는 두 가지 방법이다. Rest 파라미터는 ES6에서 도입된 새로운 문법이며, Arguments는 예전부터 JavaScript에서 제공되는 객체다.

Arguments는 함수에 전달된 모든 인자를 포함하는 유사 배열 객체이며, 이 객체는 함수 내부에서 arguments라는 이름의 변수를 통해 접근할 수 있다.

function myFunction() {
  console.log(arguments);
}
myFunction(1, 2, 3); // [1, 2, 3]

Arguments는 배열이 아닌 유사 배열 객체이기 때문에, 배열 메소드를 사용하기 위해서는 먼저 배열로 변환해주어야 한다. 또한, Arguments 객체는 함수에 전달된 파라미터의 개수나 타입 등의 정보를 얻을 수 있기 때문에, 이러한 정보를 사용하는 경우에는 Arguments 객체를 사용해야 한다.

profile
Frontend Developer

0개의 댓글