자바스크립트에서 언어 차원에서 지원하는 문법

자주 쓰이는 자료구조인 객체와 배열을 적은 코드로 쉽게 할당할 있게 해준다.

 

간단한 사용 예시

//단순히 scope를 나누기 위함
function scope1(){
    const arr = [1,2,3];
    const data1 = arr[0];
    const data2 = arr[1];
    const data3 = arr[2];
    console.log(`예전 방식`,data1,data2,data3);
    //배열분해할당
    const [a,b,c] = arr;
    console.log(`신 방식`,a,b,c);
}
scope1();

자동으로 매핑되어 할당된 것을 있다.

 

크기가 다른 경우



function scope2(){
    const arr1 = [1,2,3,4,5];
    const arr2 = [1,2,3];
    const [a1, a2, a3] = arr1;
    const [b1, b2, b3, b4, b5] = arr2;
    console.log(`배열 요소가 더 많은 경우`,a1,a2,a3);
    console.log(`변수가 더 많은 경우`, b1,b2,b3,b4,b5);
}


할당할 있는 만큼 할당된 것을 있다.

 

활용



//활용, Arguments
function scope3(a1,a2,a3){
    const [b1,b2,b3] = Array.from(arguments);
    console.log(b1,b2,b3);
}
scope3(1,2,3);
//활용, 나머지 연산자
function scope4(...args){
    const [b1,b2,b3] = args;
    console.log(b1,b2,b3);
}
scope4(1,2,3);


주의사항



//활용, Arguments 주의사항
function scope5(a1 = 1,a2 = 2,a3 = 3){
    console.log(arguments);
    const [b1,b2,b3] = Array.from(arguments);
    console.log(b1,b2,b3);
    console.log(a1,a2,a3);
}
scope5();

기본값을 활용하는 경우 위와 같이 원하던 동작 대로 동작하지 않는다.

 

객체분해할당

배열의 경우도 분해할당이 유용하지만 유용한 것은 객체분해할당이다.

 

매개변수

메서드 혹은 함수에서 좋은 매개변수 숫자는 일까?

"이펙티브 자바" 책에 따르면 좋은 매개변수 숫자는 0개이다.

다음은 1 , 다음은 2 이다.

 

매개변수 2 부터는 인자의 순서도 신경을 써야하기 때문에 사용성이 제곱으로 어려워 진다.

, 인자가 2 이상부터는 인자 순서에 의존하게 된다.

 

점은 알고 다음 예시를 보자

//객체분해할당
class Car {
    constructor(year, model, gas){
        [this.year, this.model, this.gas] = arguments;
    }
}
console.log(new Car(2023,'그렌저','가솔린'));
//사용자가 실수로 순서를 잘못 넣음
console.log(new Car('그렌저',2023,'가솔린'));

데이터가 잘못 들어간 것을 있다.



//객체분해할당, 매개변수 순서 의존 제거
class Car2 {
    constructor({year = '2022', model = '소나타', gas = '가솔린'} = {}){
        this.year = year;
        this.model = model;
        this.gas = gas;
    }
}
console.log(
    new Car2({
        year : 2023 ,
        model : '그렌저' ,
        gas : '가솔린' ,
    })
);
console.log(
    new Car2({
        gas : '가솔린' ,
        model : '그렌저' ,
        year : 2023 ,
    })
);
console.log(
    new Car2()
);

객체의 특성을 사용해 인수의 순서 의존을 제거했다.

추가로 기본값을 주어 안정성을 높였다.

 

https://ko.javascript.info/destructuring-assignment

'개발 > 자바스크립트' 카테고리의 다른 글

배열은 객체?  (0) 2023.08.18
반올림 함수  (0) 2023.04.10
평균 구하기 주의점  (0) 2023.01.21
자바스크립트 중복제거 - 2  (0) 2022.12.15
자바스크립트 중복 제거  (0) 2022.12.12

+ Recent posts