본문 바로가기

JavaScript

JavaScript - Spread

  • ES2015에서 등장한 문법이다.
  • 배열에서 유용하게 활용할 수 있다.
  • 스프레드 구문 시 주의해야할 점은, 배열에 요소가 1개인 경우 에러가 발생한다는 점이다.

spread 기능은 다음과 같다.

 

1. 배열 풀기

'펼치다'라는 의미처럼 여러개의 값을 하나로 묶은 배열을 스프레드를 사용해서 다시 풀어놓을 수 있다.

const numbers = [1, 2, 3];
console.log(…numbers); // 1 2 3 (배열이 아님) 마치 console.log(1, 2, 3); 한 것처럼 출력된다.

2. 깊은 복사

const firstAnimals = ['dog', 'cat'];
const secondAnimals = […firstAnimals];
secondAnimals.push(‘rabbit’);
console.log(firstAnimals); // ['dog', 'cat']
console.log(secondAnimals); // ['dog', 'cat', 'rabbit']


const thirdAnimals = […firstAnimals, 'bird'];
console.log(thirdAnimals); // ['dog', 'cat', 'bird']

위와같이, 스프레드 구분을 사용해서 firstAnimals.slice()를 한 것과 마찬가지로 깊은 복사가 된 것을 확인할 수 있다.

그리고 아래쪽의 thirdAnimals에서처럼 작성하면, 복사와 요소추가를 동시에 할 수 있다.

3. 배열 합치기

const arr1 = [1, 2, 3];
const arr2 = [4, 5, 6];
const arr3 = […arr1, …arr2];

4. 함수의 argumnet로 활용

const printValue = (first, second, third) => {
	console.log(first);
	console.log(second);
	console.log(third);
}
const arr = [‘mouse’, ‘cat’, ‘dog’];
printValue(…arr);

여러개의 파라미터를 필요로하는 함수가 있고, 이 함수에 넘길 값들을 배열의 형태로 모아두었다면, 스프레드구문으로 넘길 수 있다.

5. 배열을 객체로

const animals = [‘mouse’, ‘cat’, ‘dog’];
const animalsObject = {…animals};
console.log(animalsObject); // {0: ‘mouse’, 1: ‘cat’, 2: ‘dog’}

배열을 스프레드구문으로 객체로 만들면 위와같이 인덱스가 key(property name)으로 생성된다.

 

6. 객체에서 spread구문 사용하기

ES2018에서 객체에도 Spread구문을 사용할 수 있는 표준이 등장했다.

const kong = {
	type : 'cat',
	hair : 'soft'
}
const mimi = { …kong, size: 'big' };

주의점 

  • spread구문을 통해 배열을 객체로는 만들 수 있었지만, 객체를 배열로 만들수는 없다.
  • 객체에 스프레드 구문을 사용해도 함수의 아규먼트로도 사용할 수 없다.
  • 객체에 스프레드 구문을 사용할 때에는 반드시 {} 중괄호 안에서 활용해야 한다.

'JavaScript' 카테고리의 다른 글

JavaScript - 구조분해  (0) 2023.10.11
JavaScript - 객체의 프로퍼티  (0) 2023.10.11
JavaScript - 문장과 표현식  (0) 2023.10.11
JavaScript - 함수 다루기  (0) 2023.10.11
JavaScript- 변수와 스코프  (0) 2023.10.11