2026년 상식닷컴 선정 식당 & 카페 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요

자바스크립트에서 spread 연산자(Spread Operator)는 무엇인가요?

_____
Q1: 자바스크립트에서 spread 연산자란 무엇인가요?
A1: spread 연산자(...)는 배열이나 객체를 개별 요소나 프로퍼티로 분리해서 복사하거나 병합할 때 사용하는 문법입니다. ES6에 도입되었으며, 배열, 객체, 함수 호출 등에 활용됩니다.

Q2: spread 연산자는 어떤 상황에서 사용하나요?
A2:
- 배열 또는 객체의 복사
- 여러 배열 또는 객체를 병합하거나 결합할 때
- 함수 호출 시 배열을 개별 인자로 전달할 때
- 배열 요소를 쉽게 분리하거나 새로운 배열 생성할 때

Q3: 배열에서 spread 연산자의 예시는 무엇인가요?
A3:
```javascript
const arr1 = [1, 2, 3];
const arr2 = [...arr1, 4, 5]; // [1, 2, 3, 4, 5]
```
arr1의 요소를 모두 풀어서 arr2에 복사하고, 뒤에 4와 5를 추가합니다.

Q4: 객체에서 spread 연산자는 어떻게 사용하나요?
A4:
```javascript
const obj1 = { a: 1, b: 2 };
const obj2 = { ...obj1, c: 3 }; // { a: 1, b: 2, c: 3 }
```
obj1의 프로퍼티를 복사해 obj2를 만들고, c 프로퍼티를 추가합니다.

Q5: 함수 인자 전달에는 어떻게 활용되나요?
A5:
```javascript
function sum(x, y, z) { return x + y + z; }
const numbers = [1, 2, 3];
sum(...numbers); // 6
```
numbers 배열 요소를 개별 인자로 함수에 전달합니다.

Q6: spread 연산자와 rest 파라미터의 차이는 무엇인가요?
A6:
- spread 연산자: 배열이나 객체를 펼쳐서 요소/프로퍼티로 분해할 때 사용
- rest 파라미터: 함수 파라미터에서 나머지 인자를 배열로 모을 때 사용
문법은 ... 같지만 용도는 반대입니다.

Q7: spread 연산자로 깊은 복사가 가능한가요?
A7: 아니요, spread 연산자는 1단계 깊이까지만 복사하는 얕은 복사(shallow copy)를 수행합니다. 내부에 객체가 있으면 참조가 복사됩니다.

Q8: spread 연산자가 적용될 수 있는 자료형은 무엇인가요?
A8: 이터러블(iterable)인 배열, 문자열, Map, Set 등에 적용 가능하며, 객체 리터럴에도 별도로 적용됩니다.

요약:
spread 연산자(...)는 배열이나 객체 등의 요소를 개별적으로 분해하여 복사하거나 병합하는 자바스크립트 문법으로, 함수 호출 시에도 배열을 인자로 쉽게 전달하는 데 유용하며, 얕은 복사만 지원합니다.
Spread 연산자(Spread Operator)는 JavaScript에서 배열이나 객체의 요소를 개별적으로 분리하여 사용할 수 있게 해주는 문법입니다.

ES6(ECMAScript 201

5)에서 도입된 이 기능은 코드의 가독성을 높이고, 배열 및 객체를 다루는 작업을 더 간편하게 만들어 줍니다.

Spread 연산자는 주로 배열과 객체의 복사, 결합, 함수 호출 시 인수 전달 등 다양한 상황에서 활용됩니다.

기본 문법 Spread 연산자는 세 개의 점(...)으로 표현됩니다.

예를 들어, 배열에서 사용하면 다음과 같은 형태로 나타납니다: ```javascript const arr1 = [1, 2, 3]; const arr2 = [...arr1, 4, 5]; // arr2는 [1, 2, 3, 4, 5]가 됩니다.

``` 위의 예제에서 `arr1`의 요소가 `arr2`에 복사되고, 추가로 4와 5가 뒤에 붙습니다.

이처럼 Spread 연산자는 기존 배열의 요소를 새로운 배열로 쉽게 복사하고 결합할 수 있게 해줍니다.

배열 복사 Spread 연산자는 배열을 복사할 때 유용합니다.

다음은 배열을 복사하는 예제입니다: ```javascript const originalArray = [1, 2, 3]; const copiedArray = [...originalArray]; console.log(copiedArray); // [1, 2, 3] ``` 이 경우 `copiedArray`는 `originalArray`의 얕은 복사본이 됩니다.

즉, 원본 배열의 요소가 변경되더라도 복사본에는 영향을 미치지 않습니다.

배열 결합 Spread 연산자는 여러 배열을 결합할 때도 유용합니다: ```javascript const array1 = [1, 2, 3]; const array2 = [4, 5, 6]; const combinedArray = [...array1, ...array2]; console.log(combinedArray); // [1, 2, 3, 4, 5, 6] ``` 위의 예제에서 `array1`과 `array2`의 요소가 결합되어 새로운 배열 `combinedArray`가 생성됩니다.

객체 복사 및 결합 Spread 연산자는 객체에서도 사용할 수 있습니다.

객체의 복사 및 결합도 간편하게 처리할 수 있습니다: ```javascript const obj1 = { a: 1, b: 2 }; const obj2 = { b: 3, c: 4 }; const combinedObj = { ...obj1, ...obj2 }; console.log(combinedObj); // { a: 1, b: 3, c: 4 } ``` 위의 예제에서 `obj1`과 `obj2`를 결합할 때, 동일한 키(b)가 있을 경우 `obj2`의 값이 우선시됩니다.

따라서 `combinedObj`의 `b`는 3이 됩니다.

함수 호출 시 인수 전달 Spread 연산자는 배열을 함수의 인수로 전달할 때도 유용합니다.

예를 들어, 다음과 같이 사용할 수 있습니다: ```javascript const numbers = [1, 2, 3]; const sum = (a, b, c) => a + b + c; console.log(sum(...numbers)); // 6 ``` 위의 예제에서 `numbers` 배열의 요소가 개별 인수로 분리되어 `sum` 함수에 전달됩니다.

주의사항 Spread 연산자는 얕은 복사(shallow copy)를 수행합니다.

즉, 객체나 배열의 중첩된 구조가 있을 경우, 내부 요소는 복사되지 않고 참조만 복사됩니다.

다음 예제를 통해 이를 확인할 수 있습니다: ```javascript const original = [{ a: 1 }, { b: 2 }]; const copy = [...original]; copy[0].a = 10; console.log(original[0].a); // 10 ``` 위의 예제에서 `copy`의 첫 번째 요소를 변경하면 `original`의 첫 번째 요소도 영향을 받습니다.

이는 두 배열이 동일한 객체를 참조하고 있기 때문입니다.

결론 Spread 연산자는 JavaScript에서 배열과 객체를 다루는 데 있어 매우 유용한 도구입니다.

배열의 복사, 결합, 객체의 병합, 함수 호출 시 인수 전달 등 다양한 상황에서 활용할 수 있으며, 코드의 가독성을 높이고 작성하는 데 드는 노력을 줄여줍니다.

그러나 얕은 복사로 인해 중첩된 구조를 다룰 때는 주의가 필요합니다.

이러한 특성을 이해하고 활용하면 JavaScript 프로그래밍에서 더 효율적이고 깔끔한 코드를 작성할 수 있습니다.

작성자: 정윤서 [비회원] | 작성일자: 1년 전 2024-09-10 08:36:56
조회수: 219 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.