구조분해할당
자바스크립트 구조분해할당
배열이나 객체를 분해하여 변수에 할당하는 문법이다.
배열 구조분해 할당
const [a, b] = [1,2,3] //1번
console.log(a); //1
console.log(b); //2
const [c,...rest] = [1,2,3] //2번
console.log(c); //1
console.log(rest); //[2,3]
const [d, ,f] = [1,2,3] //3번
console.log(d); //1
console.log(f); //3
let g = 10;
let h = 20;
[g, h] = [h, g]; //4번
console.log(g); //20
console.log(h); //10
순서대로 a, b에 값을 할당하고 3은 무시한다.
순서대로 c에 1을 할당하고 spread문법으로 나머지를 rest에 할당한다.
두번째자리를 비움으로써 d, f 순서대로 1, 3을 할당한다.
두 값을 바꿀수도 있다.
객체 분해 구조할당
const {a, b} = {a: 1, b: 2}; //1번
console.log(a); //1
console.log(b); //2
const {a = 1, b} = {b: 2}; //2번
console.log(a); //1
console.log(b); //2
const {a:aa, b:bb} = {a: 1, b: 2}; //3번
console.log(aa); //1
console.log(bb); //2
const {a:aa = 1, b:bb} = {b: 2}; //4번
console.log(aa); //1
console.log(bb); //2
우측 객체 프로퍼티를 좌측 변수에 대입한다. 좌측 변수이름은 가져올 객체 프로퍼티와 같아야 한다.
위와 같지만 값을 가져올 객체에 a 프로퍼티가 없거나 값이 undefined이면 a 기본값을 1로 할당한다.
1과 같지만 변수이름을 aa 와 bb 로 변경한다. a는 변수로써 못쓰이고 aa로만 쓸 수 있다.
1,2,3의 조합 - 객체 프로퍼티를 a, b로 변수로 할당하지만 이름은 aa, bb로 변경하고, a프로퍼티가 없거나 값이 undefined 이면 aa 기본값을 1로 할당한다.
함수 파라미터에서 객체분해구조할당
함수의 파라미터 에서도 쓸 수 있다.
const func = ({a = 1, b}) => {
console.log(a);//1
console.log(b);//2
}
func({a:1, b:2});
Last updated
Was this helpful?