티스토리 뷰
확산연산자란?
let arr = [1, 2, 3, 4, 5]; console.log(...arr);
우선 arr이라는 배열 안에는 1~5까지의 숫자가 들어있습니다. 그리고 확산연사자를 통해서 콘솔에 값을 확인하면 어떻게 될까요? ...arr은 1 2 3 4 5라는 안 쪽의 값을 리턴합니다. 그리고 [...arr]처럼 배열리터럴을 하고 확산연산자를 쓰면 arr이라는 배열과 값이 같은 배열을 만들어 냅니다. 기본적으로 이 사실을 알면 쉽게 활용할 수 있습니다.
배열에서의 활용
let arr = [1, 2, 3, 4, 5]; let arr2 = [...arr] //arr2의 값은 [1, 2, 3, 4, 5]
확산연산자를 활용하면 예시처럼 쉽게 값을 복사할 수 있습니다. 또 배열을 확장하는데도 아주 편하게 사용할 수 있습니다.
let arr = [1, 2, 3, 4, 5]; let arr2 = [0, ...arr, 6, 7];
arr이라는 배열에 몇 개의 숫자를 더해서 arr2라는 배열을 만들어냈습니다. 당연히 arr2의 값은 [0, 1, 2, 3, 4, 5, 6, 7] 입니다. 확산연산자에는 또 하나의 기능이 있습니다. 바로 나머지 값을 할당받는 것입니다.
배열에서 나머지 요소 받기
let arr = [1, 2, 3, 4, 5]; let [arr2, arr3, ...arr4] = arr;
배열리터럴을 할당문 왼쪽에 사용하는 것은 구조분해에서 본 형태죠? arr이라는 배열에 있는 값을 arr2와 arr3, arr4에 할당하고 있습니다. arr4 앞에는 확산연산자가 있다는 것을 주목해주세요. 이처럼 확산연산자를 통해서 나머지 요소를 다 할당받을 수 있습니다. 예시에서 arr2는 1, arr3은 2 그리고 arr4는 [3, 4, 5]라는 값을 가지게 됩니다.
나머지 값을 받으실 땐 확산연산자가 붙은 변수는 항상 맨뒤에 있어야 합니다.
나머지 값을 받는 요소가 가운데나 첫번째에 위치한다면 에러를 일으킵니다. 알아두세요.
함수에서의 활용
let arr = [1, 2, 3, 4, 5]; function sum(a, b, c, d, e){ return a + b + c + d + e; }; sum(...arr); // 15
sum이라는 함수에는 매개변수가 5개 필요하고, 그 5개의 값을 더한 값을 반환합니다. arr이라는 배열안의 값을 확산연산자를 통해서 함수에 전달했습니다. 나머지 요소들을 받는 확산연산자의 기능을 함수에서도 사용할 수 있습니다.
함수에서 나머지 요소 활용하기
function f(x, ...y) { // y 는 배열입니다. console.log(y[0], y[1]); return x * y.length; }; console.log(f(3, "hello", true)); //결과값은 6
매개변수에 확산연산자를 사용했습니다. 이때도 주의해야할 건 확산연산자를 쓴 매개변수는 제일 뒤에 위치해야한다는 것입니다. 위치가 맨 뒤가 아닐 시 에러가 납니다. 그리고 매개변수에서 나머지값을 받은 y는 배열처리 된다는 것을 알아주세요.
공감은 제작자에게 큰 힘이 됩니다.
'Frontend-dev > HTML-CSS-JS' 카테고리의 다른 글
자바스크립트의 반복문 (0) | 2018.02.17 |
---|---|
자바스크립트의 조건문 (0) | 2018.02.17 |
자바스크립트 배열의 구조분해(destructuring) (1) | 2018.02.11 |
자바스크립트 객체의 구조분해(destructuring) (1) | 2018.02.11 |
자바스크립트의 배열 (0) | 2018.02.10 |