📜 Js

[ES6] 비구조화 할당과 Spread & Rest

loose 2021. 2. 10. 16:12
반응형

비구조화 할당

const user = { name: 'stir', password: '1234' };

const { name, password } = user; //'stir', '1234'

Spread

const user = ['stir1', 'stir2']; 

const allUser = [...user, 'stir3']; //'stir1', 'stir2', 'stir3'

Rest

const user = { name: 'stir', password: '1234', id:'constant',};
const { name, ...test2 } = user; 
console.log(name); //stir
console.log(test2); //1234, constant
//rest는 나머지라는 뜻으로 name에는 이미 할당되어 있어서 나머지는 test2에 할당된다.

 

차이점

위의 문법은 전부 객체(Object)형, 배열(Array)형 둘다 사용 가능한 문법이다.

다만, 타입의 특성마다 조금씩 차이는 존재한다. 

const arr = ["1", "2", "3", "4"]
const [firstElement, ...rest] = arr
console.log(firstElement) // "a"

위 코드의 배열형은 firstElement가 정상적으로 출력된다.

const arr = {a:'1', b:'2',}
const {firstElement, ...rest} = arr
console.log(firstElement) // undefined

하지만 객체형은 출력하지 못한다.

const arr = {a:'1', b:'2',}
const {a, ...rest} = arr
console.log(a) // 1

위 코드 처럼 객체형은 같은 객체 이름으로 받아야만 출력이 가능하다.

728x90