본문 바로가기
개발 공부 일지/JavaScript

자바스크립트 - Spread 구문 syntax

by yelimu 2024. 7. 19.

const numbers = [1, 2, 3];

console.log(numbers); [1,2,3]
console.log(...numbers); 1 2 3
console.log(1, 2, 3); 1 2 3

rest 와는 반대 (개별 요소를 하나의 배열로 묶는다)

 

 

배열을 복사할때 편리하다 / 객체도 가능(ES2018~)

const numbers = [1, 2, 3];
const num = numbers;                  객체의 주소를 참조하므로 num의 요소가 바뀌면 numbers 요소도 바뀜
const numArr = numbers.slice();   이를 피하기 위해 slice()로 배열을 복사해야 영향을 미치지 않는다
const numSpread = [...numbers, 9];  spread로 복사할 수 있음! & 요소(다른 배열도 가능)를 바로 추가할 수도 있음

num.push(5);
numArr.push(7);

console.log(numbers); //[ 1, 2, 3, 5 ]
console.log(num); //[ 1, 2, 3, 5 ]
console.log(numArr); //[ 1, 2, 3, 7 ]
console.log(numSpread); //[ 1, 2, 3, 9 ]

 

 

배열을 펼쳐서 각각의 아규먼트로 사용도 가능 /객체는 x

 

const intro = (name, birth, job) => {
  console.log(`저는 ${name}입니다`);
  console.log(`${birth}생년이고`);
  console.log(`직업은 ${job}입니다`);
}

const myArr = ['콬코코', 2020, '무직'];
intro(...myArr);

 

 

그렇지만 스프레드 구문이 값 자체는 아님!! 값들의 목록임 -> 변수에 할당할 수는 없다 

 

+ 객체 내 모든 요소 뒤에는 쉼표(, ) 를 넣어주자 : 마지막 요소이더라도 일관성 & 누락 방지