본문 바로가기
JavaScript

(배열,객체) 구조화, 스프레드 연산자

by 김봉구 2022. 4. 2.

배열 구조화

const nested = [2, 4, [5, 6]];
const [i, , j] = nested;
console.log(i, j); // 2 [5, 6]

const [i, , [j, k]] = nested;
console.log(i, j, k); // 2 5 6
const [p, q, r] = [8, 9];
console.log(p, q, r); // 8 9 undefined

const [p = 1, q = 1, r = 1] = [8, 9];
console.log([p, q, r]); // [8, 9, 1]

 

객체 구조화

let a = 111;
let b = 999;
const obj = { a: 23, b: 7, c: 14 };
({ a, b } = obj); 4️⃣
console.log(a, b); // 23 7

4️⃣에서 괄호를 하지 않으면 중괄호로 둘러쌓인 블록에 아무것도 할당할 수 없기 때문에

'SyntaxError: Unexpected token' 에러가 발생한다.

 

스프레드 연산자(...)

const arr = [7, 8, 9];
const badNewArr = [1, 2, arr[0], arr[1], arr[2]];
console.log(badNewArr); // [1, 2, 7, 8, 9]

// es6 이후
const newArr = [1, 2, ...arr];
console.log(newArr); // [1, 2, 7, 8, 9]

// 스프레드 연산자(...)를 사용하지 않았을 때
const newArr = [1, 2, arr];
console.log(newArr); // [1, 2, [7, 8, 9]]

console.log(...newArr);      // 1 2 7 8 9
console.log(1, 2, 7, 8, 9);  // 1 2 7 8 9
console.log(newArr);         // [1, 2, 7, 8, 9]

스프레드 연산자(...)를 사용하지 않으면 배열안에 새배열로 값을 리턴한다.

마지막은 스프레드 연산자를 쓰고 안쓰고의 리턴값 차이를 보여준다.

 

const arr = [1, 2, ...[3, 4]];
console.log(arr); // [1, 2, 3, 4]

const [a, b, ...others] = [1, 2, 3, 4, 5];
console.log(a, b, others); // 1 2 [3, 4, 5]

 

const add = function (...numbers) {
  let sum = 0;
  for (let i = 0; i < numbers.length; i++) sum += numbers[i];
  console.log(sum);
};

add(2, 3);                  // 5
add(5, 3, 7, 2);            // 17
add(8, 2, 5, 3, 2, 1, 4);   // 25

매개변수에도 스프레드 연산자를 사용할 수 있다.

 

'JavaScript' 카테고리의 다른 글

JavaScript 배열  (0) 2022.04.05
JavaScript 함수  (0) 2022.04.05
JavaScript 예시로 정리 2  (0) 2022.04.04
JavaScript 예시로 정리  (0) 2022.04.04
연산자  (0) 2022.04.02

댓글