Rest 파라미터
Rest 파라미터(Rest parameters, '나머지 매개변수'라고도 함)는
함수의 마지막 매개변수 앞에 점 세 개 (...
)를 붙여서 정의한 매개변수를 의미합니다.
- Rest 파라미터는 자바스크립트의 함수 정의에서 사용되는 매개변수(parameters) 유형 중 하나입니다.
- Rest 파라미터는 함수를 정의할 때 매개변수의 수가 하나든 여러 개든, 어떤 경우에도 반드시 매개변수 목록의 마지막에 위치해야 합니다.
- Rest 파라미터부터는 사용자가 Rest 파라미터에 할당되는 인수를 계속 추가할 수 있습니다.
- Rest 파라미터 이후에 나오는 나머지 인수들은 배열로 묶여 Rest 파라미터에 할당됩니다.
- 여기서 '나머지'라는 용어는 영어로 'rest'라고 표현되며, 함수에 전달된 추가적인 인수들을 나타냅니다.
Rest 파라미터, 또는 '나머지 매개변수'로 불리는 것은 이 때문입니다.
Rest 파라미터는 함수 선언식, 함수 표현식, 화살표 함수 표현식 등 모든 함수 정의에 사용할 수 있습니다.
function fn(...rest) {
console.log(rest); // 배열로 전달 받은 rest
}
fn(1, 2, 3); // 출력: [1, 2, 3]
const expression_fn = function (...rest) {
console.log(rest); // 배열로 전달 받은 rest
}
expression_fn(1, 2, 3); // 출력: [1, 2, 3]
const arrow_fn = (...rest) => {
console.log(rest); // 배열로 전달 받은 rest
}
arrow_fn(1, 2, 3); // 출력: [1, 2, 3]
구문
function functionName(param1, param2, ...restParams) {
// 함수 본문에서 restParams를 배열로 사용할 수 있습니다.
}
param1
,param2:
: 함수 파라미터로, 함수에 필요한 고정된 인수를 나타냅니다....restParams
: Rest 파라미터로, 나머지 인수를 수집하는 배열을 나타냅니다.
예제
function myFun(a, b, ...manyMoreArgs) {
console.log("a:", a);
console.log("b:", b);
console.log("Rest 파라미터 manyMoreArgs:", manyMoreArgs);
}
myFun("apple", "banana", "cherry", "date", "elderberry", "fig");
// 출력:
// "a: apple"
// "b: banana"
// "Rest 파라미터 manyMoreArgs:" [ 'cherry', 'date', 'elderberry', 'fig' ]
위 에시코드는 자바스크립트에서 Rest 파라미터를 사용하는 예시입니다. Rest 파라미터는 함수에 전달된 인수들 중에서 명시적으로 선언된 파라미터 이후의 모든 인수를 배열로 수집합니다.
여기서 함수 myFun
은 세 개의 파라미터 a
, b
, ...manyMoreArgs
를 받습니다. a
와 b
는 각각 첫 번째와 두 번째 인수를 나타냅니다. 그리고 ...manyMoreArgs
는 manyMoreArgs
라는 배열에 나머지 모든 인수를 저장합니다.
따라서 myFun("apple", "banana", "cherry", "date", "elderberry", "fig")
를 호출하면 "a: apple", "b: banana"가 각각 출력되고, 나머지 인수들은 Rest 파라미터인 manyMoreArgs
배열에 저장되어 출력됩니다.
주의해야 할 점
- 함수 정의에는 Rest 파라미터가 하나만 있어야 합니다.
- Rest 파라미터는 함수를 정의할 때 매개변수의 수가 하나든 여러 개든, 어떤 경우에도 반드시 매개변수 목록의 마지막에 위치해야 합니다.
function wrong1(...one, ...wrong) {} // 에러
function wrong2(...wrong, arg2, arg3) {} // 에러
- Rest 파라미터는 함수의
length
속성에 포함되지 않습니다.
length
속성에 포함되지 않습니다.
function exampleFunction(a, b, ...restParams) {
// 함수 본문
}
console.log(exampleFunction.length); // 출력: 2
가변항 함수를 표현할 때 사용
가변항 함수(Variable-arity Function)는 함수가 다양한 수의 인수(arguments)를 받아서 처리할 수 있는 함수를 가리킵니다. 이러한 함수는 호출될 때 전달되는 인수의 개수가 고정되지 않으며, 필요한 만큼의 인수를 받아 처리할 수 있습니다.
Rest 파라미터는 자바스크립트에서 가변항 함수를 표현하는 강력한 도구입니다. 이를 통해 함수는 다양한 수의 인수를 처리하고 다룰 수 있으며, 자바스크립트의 console.log()
함수와 같이 가변항 함수로 사용됩니다.
자바스크립트의 console.log()
함수
console.log("Hello", "World", "!");
// 출력: "Hello World !"
Rest 파라미터 활용 가변항 함수 예제
function sum(...numbers) {
let total = 0;
for (let number of numbers) {
total += number;
}
return total;
}
console.log(sum(1, 2, 3, 4, 5)); // 출력: 15
명세서
명세서 사양 | |
---|---|
...restParams
|
ECMAScript Language Specification #sec-function-definitions |
브라우저 호환성
함수 |
데스크탑 Chrome
|
데스크탑데스크탑 Edge
|
데스크탑 Firefox
|
Safari
|
---|---|---|---|---|
...restParams
|
47 | 12 | 15 | 10 |