
여기저기 코드를 보러다니니까 요즘 많이 보이는게 구조분해할당이랑 스프레드 연산자인 것 같다.
실무에서는 잘 사용하지 못했었는데, 이 좋은걸 왜 안썼지,,?
지금이라도 써보자는 마음으로 나의 스프레드 연산자에 대한 고촬을 정리해봤다.
검색해보면 이터러블(Iterable)한 객체에 사용할 수 있다고 주로 쓰여있는데, 간단하게 말해서 for ... of 사용 가능한 반복(iteration)이 가능한 객체다.
대표적으로 배열, 문자열, Set, Map, ... 이 있다. 의외로 일반 객체는 사용 불가하다. (일반 객체는 for ... in) 일반 객체는 key 를 순회하는거라서 예시들과는 좀 다르다.
이런 이터러블한 객체의 요소를 개별적으로 분해해서 사용할 수 있게 해주는게 스프레드 연산자이다.
스프레드 연산자의 사용
let arr = [1,2,3,4,5]
// 배열을 풀어서
console.log(...arr); // 1 2 3 4 5
// 배열을 복사
let copy = [...arr]
console.log(copy); // [1,2,3,4,5]
// 배열 합치기
let arr2 = [6,7,8,9]
let mergedArr = [...arr, ...arr2]
console.log(mergedArr) // [1,2,3,4,5,6,7,8,9]
// 함수에서 활용
const fuc = (a,b,c) =>{
return a+b+c
}
console.log(fuc(...arr)) // 구조분해할당 되어서 1+2+3
// 문자열에서 작동
let str = 'letmegohome';
console.log([...str]) // ['l','e','t','m','e','g','o','h','o','m','e'] : .split() 과 같은 효과
// Set 을 배열로 변환
let numSet = new Set([0,7,3,3,1])
console.log(numSet) // {0,7,3,1}
console.log([...numSet]) // [0,7,3,1]
3. 결론
- 스프레드 연산자는 요소를 펼쳐서 분해한다음 사용할 수 있게 해주는 기능이다.