자바스크립트 문법

윱니·2023년 10월 30일

전개구문(Sperad Syntax)에 대해 정리
: 객체 혹은 배열들을 펼칠 수 있게 해줌

// 펼칠 대상이 객체인 경우
{...obj}


// 펼칠 대상이 배열인 경우
[...arr]
// 혹은
{...arr}

문법 자체는 간단하나, 펼쳐진 객체나 배열을 담을 곳이 필요
객체는 객체로, 배열은 객체나 배열로 담을 수 있음.

  1. 펼칠 대상이 객체인 경우
const myObject1 = {
    laptop: 'MacBook Pro',
    tablet: 'iPad Pro 13'
}

const myObject2 = {...myObject1};

console.log(myObject1); // {laptop: "MacBook Pro", tablet: "iPad Pro 13"}
console.log(myObject2); // {laptop: "MacBook Pro", tablet: "iPad Pro 13"}

console.log(myObject1 === myObject2); // false

myObject2는 myObject1과 똑같은 모양의 프로퍼티를 갖지만 두 객체를 비교할 경우 서로 다른 주소값을 가진 독립적인 객체임을 알 수 있음.

const myObject1 = {
    laptop: 'MacBook Pro',
    tablet: 'iPad Pro 13'
}

const myObject2 = {
    ...myObject1,
    phone: 'Galaxy Note 10'
};

console.log(myObject1); // {laptop: "MacBook Pro", tablet: "iPad Pro 13"}
console.log(myObject2); // {laptop: "MacBook Pro", tablet: "iPad Pro 13", phone: "Galaxy Note 10"}

전개 구문을 활용하면 다른 객체의 프로퍼티를 복사해오면서 추가로 프로퍼티를 작성할 수 있음.

  1. 펼칠 대상이 배열인 경우
const myArray1 = ['Canna', 'Cuzz', 'Faker', 'Teddy', 'Effort'];

const myArray2 = [...myArray1];

console.log(myArray1); // ["Canna", "Cuzz", "Faker", "Teddy", "Effort"]
console.log(myArray2); // ["Canna", "Cuzz", "Faker", "Teddy", "Effort"]

console.log(myArray1 === myArray2); // false

배열도 동일하게 전개구문을 활용해 배열을 펼칠 수 있고, 두 배열을 비교하면 서로 다른 독립적인 배열이 되는 것을 확인할 수 있음.

const myArray = ['Canna', 'Cuzz', 'Faker', 'Teddy', 'Effort'];

const myObject = {...myArray};

console.log(myArray); // ["Canna", "Cuzz", "Faker", "Teddy", "Effort"]
console.log(myObject); // {0: "Canna", 1: "Cuzz", 2: "Faker", 3: "Teddy", 4: "Effort"}

만약 펼친 배열을 중괄호로 객체로 만든다면, 각 요소는 프로퍼티 값이 되고 배열의 index가 프로퍼티 네임이 됨.

  1. 나머지 매개변수로의 활용
    전개 구문은 함수의 나머지 매개변수로도 활용가능
    함수를 호출할 때 인자들을 하나의 배열로 모아줄 수 있음.
function myFunction(name, ...members) {
    return {name: name, members: members}
}

const myTeam1 = myFunction('T1', 'Canna', 'Cuzz', 'Faker', 'Teddy', 'Effort');
const myTeam2 = myFunction('Damwon', 'Nuguri', 'Canyon', 'ShowMaker', 'Ghost', 'BeryL');

console.log(myTeam1); // {name: "T1", members: Array(5)}
console.log(myTeam2); // {name: "Damwon", members: Array(5)}
profile
코린이 탈출을 기원하는 코린이

0개의 댓글