ES6 에서 도입된 문법이다. 스프레드 문법
...
은 하나로 뭉쳐있는 여러 값들의 집합을 펼쳐서 개별적인 값들의 목록으로 만든다.
스프레드 문법을 사용할 수 있는 대상은
Array
,String
,Map
,Set
,arguments
,DOM 컬렉션
과 같이 for...of 문으로 순회할 수 있는 이터러블에 한정된다.
console.log(...[1, 2, 3]); // 1 2 3
//문자열은 이터러블이다.
console.log(...'Hello'); // H e l l o
// 이터러블이 아닌 일반 객체는 스프레드 문법이 적용 불가능하다.
console.log(...{a: 1, b: 2}); // TypeError
위 예제에서 ...[1, 2, 3]은 이터러블인 배열을 펼쳐서 요소들을 개별적인 값의 목록 1 2 3 으로 만든다.
이때 1 2 3 은 값이 아니라 값들의 목록이다. 즉, 스프레드 문법의 결과는 값이 아니다. 따라서 스프레드 문법의 결과는 변수에 할당할 수 없다.