JavaScript의 rest 연산자
이 강의를 시작하기 전에 몇 가지 설명을 드리겠습니다.
이 섹션의 이전 모든 강의에서, 저는 연산자 ...에 대한
모든 사실을 말씀드리지 않았습니다.
사실 이 연산자는 코드에서의 위치에 따라 spread 연산자 또는 rest 연산자라고 불릴 수 있습니다.
이미 아시다시피, spread 연산자가
배열이나 문자열 앞에 올 때, 그것들을 개별 값으로 분해합니다.
Rest 연산자는,
비록 ...와 같은 문법을 가지고 있지만,
다른 목적을 위해 사용됩니다.
지금부터 그 목적에 대해 알아보겠습니다. 두 개의 매개변수를 받는 함수가 있다고 가정해 봅시다:
function func(a, b) {
console.log(a);
console.log(b);
}
함수에 불필요한 매개변수를 전달해도 오류가 발생하지 않는다는 것을 이미 알고 계실 것입니다:
func(1, 2, 3, 4, 5);
rest 연산자를 사용하면 모든
불필요한 매개변수를 배열 형태로 얻을 수 있습니다.
이를 위해 함수에 (반드시 마지막에)
또 다른 매개변수를 추가하고, 그 앞에 3개의 점을 찍습니다:
function func(a, b, ...rest) {
}
이 세 개의 점이 rest 연산자이며,
변수 이름은 무엇이든 될 수 있지만,
보통 역시 rest라고 부르는 것이 일반적입니다.
불필요한 매개변수를 많이 사용하여 함수를 호출하고,
무엇이 매개변수 a와 b에 들어가고,
무엇이 나머지 rest에 들어가는지 살펴봅시다:
func(1, 2, 3, 4, 5);
function func(a, b, ...rest) {
console.log(a); // 1을 출력합니다
console.log(b); // 2를 출력합니다
console.log(rest); // [3, 4, 5]를 출력합니다
}
불필요한 매개변수가 없다면, 변수
rest에는 빈 배열이 기록됩니다:
func(1, 2);
function func(a, b, ...rest) {
console.log(a); // 1을 출력합니다
console.log(b); // 2를 출력합니다
console.log(rest); // []를 출력합니다
}
함수에 매개변수가 전혀 없을 수도 있지만,
동시에 rest를 추가할 수 있습니다.
이 경우 함수는 임의의 개수의 매개변수로 호출할 수 있으며
모든 매개변수가 배열 rest에 들어갑니다:
function func(...rest) {
console.log(rest);
}