이터러블(iterable)이란, 자바스크립트에서 반복 가능한 객체를 말한다. 이는 다수의 원소(element)를 가지며, 이들을 하나씩 순회(iterate)할 수 있는 객체를 의미한다.
예를 들어, 배열, 문자열, Map, Set 등이 iterable한 객체이다.
spread 연산자와 rest 파라미터는 모두 ... 기호를 사용하지만, 기능과 사용 방법이 다르다.
spread 연산자는 iterable한(iterable) 객체를 펼쳐서(iterate) 개별 요소로 분리하는 역할을 한다. 이를테면 배열에서 원소들을 개별적인 값으로 분리하거나, 객체에서 프로퍼티들을 개별적인 값으로 추출할 수 있다.
또한 spread 연산자는 함수 호출에서도 사용될 수 있으며, 배열을 함수 인자로 전달할 때 사용된다.
const arr = [1, 2, 3];
console.log(...arr); // 1 2 3
function sum(a, b, c) {
return a + b + c;
}
console.log(sum(...arr)); // 6
rest 파라미터는 함수 인자 형태로 사용되며, 인자들 중 일부를 배열(array) 형태로 받을 수 있게 해준다. 함수 정의에서 마지막 인자에 ...을 붙이면, 나머지 모든 인자들이 하나의 배열로 모아져서 해당 인자로 전달된다.
function sum(...nums) {
return nums.reduce((acc, val) => acc + val, 0);
}
console.log(sum(1, 2, 3)); // 6
console.log(sum(4, 5)); // 9
spread 연산자와 rest 파라미터의 공통점은 모두 ... 기호를 사용한다는 점인데, 둘 다 배열을 사용하는 경우가 많으며, spread 연산자를 사용하여 배열을 펼친 다음 rest 파라미터를 사용하여 인자로 받을 수도 있다.
둘의 차이점은 주로 사용되는 위치와 용도이다. spread 연산자는 배열이나 객체를 펼쳐서 개별 요소로 분리하는 역할을 하며, rest 파라미터는 함수 인자를 배열 형태로 받는 역할을 한다.
즉, spread 연산자는 배열을 펼칠 때 사용되는 반면, rest 파라미터는 함수 인자로 사용된다.
'Javascript' 카테고리의 다른 글
배열과 문자열에서 중복값 제거할 수 있는 방법들 (30) | 2023.11.20 |
---|---|
동기(Synchronous)와 비동기(Asynchronous) (16) | 2023.11.20 |
배열의 내장함수 정리 - 2 (33) | 2023.11.18 |
배열의 내장함수 정리 - 1 (27) | 2023.11.17 |
데이터 복사(copy)에도 깊이가 있다? (28) | 2023.11.16 |