구조분해할당은 배열 혹은 객체에서 각각의 값과 프로퍼티를 분해하여 별도의 변수에 담아 주는 자바스크립트 문법이다.
const [a, b] = [10, 20]
console.log(a) // 10
console.log(b) // 20
구조분해할당은 왼쪽에는 할당을 받을 변수를 정해주고 오른쪽에는 분해할 대상을 적어주면 된다. 그러면 [10, 20] 배열에서 각각 a, b로 값이 분해되어 할당되게 된다.
const arr = [1,2,3]
const [a,b,c] = arr
이런식으로 미리 지정된 배열을 구조분해하는 것도 가능하다.
use[state, setState] = useState("")
react에서 많이 사용하는 useState도 이런 구조분해할당을 통해서 사용할 수 있다.
나머지 전개연산자는 매개변수 이름 앞에 ... 점이 3개 붙여서 정의한 매개변수이다. 그리고 나머지 매개변수는 함수에 전달하는 인자들을 배열로 전달한다.
function test(a, b, ...rest){ // Rest 파라미터 (...rest)
console.log(a, b); // 1 2
console.log(rest); // [3, 4, 5]
}
test(1, 2, 3, 4, 5);
test에 1,2,3,4,5 라는 인자가 전달된 때 1은 a 2는 b 에 전달이 되고 나머지 3,4,5는 rest라는 이름으로 배열에 담겨 전달이 된다. 이때 나머지 매개변수는 마지막에 적어주어야 한다. 그 이유는 말 그대로 대응시키고 남은 나머지 인자들을 배열로 넘갸주기 떼문이다.