배열이나 객체의 값을 분해하여 개별 변수에 쉽게 할당할 수 있도록 해주는 문법이다.
const colors = ["red", "green", "blue"];
const [first, second, third] = colors;
console.log(first); // 결과 = red
console.log(second); // 결과 = green
console.log(third); // 결과 = blue
배열의 각 요소들을 내가 지정한 변수에 담을 수 있다.
1) 일부 값만 할당하기
const numbers = [1, 2, 3, 4, 5];
const [first, , third] = numbers;
console.log(first); // 결과 = 1
console.log(third); // 결과 = 3
배열의 요소를 모두 다 변수에 담지 않고,
내가 원하는 요소만 꺼내어 담을 수 있다. (배열의 순서는 지키며 담아야 한다.)
2) 배열의 기본값 설정
const fruits = ["apple"];
const [first, second = "banana"] = fruits;
console.log(first); // 결과 = "apple"
console.log(second); // 결과 = "banana" (기본값 적용)
배열에서 값이 하나밖에 없어도
할당시에 값을 설정할 수 있다.
3) 나머지 요소 할당 (Rest 연산자)
const [first, ...rest] = [10, 20, 30, 40];
console.log(first); // 결과 = 10
console.log(rest); // 결과 = [20, 30, 40]
Rest 연산자를 활용하면 특정 요소를 변수에 담고
남은 요소들을 배열로 받을 수 있다.
(필요한 데이터만 추출하거나, 불필요한 데이터를 제외하는데 활용 가능하다.)
const person = { name: "김카페", age: 25 };
const { name, age } = person;
console.log(name); // 결과 = "김카페"
console.log(age); // 결과 = 25
객체 속성을 변수에 할당할 수 있다.
1) 변수명 변경하기
const user = { id: 1, username: "박카페" };
const { username: userName } = user;
console.log(userName); // "박카페"
객체 속성의 변수명을 원하는 변수명으로 변경할 수 있다.
2) 기본값 설정
const person = { name: "박스벅" };
const { name, age = 30 } = person;
console.log(name); // "박스벅"
console.log(age); // 30 (기본값 적용)
객체 속성값이 없을경우 기본값 설정이 가능하다.
3) 나머지 속성 할당 (Rest 연산자)
const user = { id: 1, name: "김스벅", age: 28 };
const { id, ...rest } = user;
console.log(id); // 1
console.log(rest); // { name: "김스벅", age: 28 }
배열에서와 마찬가지로 특정 속성을 제외한 나머지 속성값을
새로운 객체로 저장할 수 있다.
(필요한 데이터만 추출하거나, 불필요한 데이터를 제외하는데 활용 가능하다.)
1) 객체 구조 분해
function introduce({ name, age }) {
console.log(`제 이름은 ${name} 입니다. 나이는 ${age} 입니다.`);
}
const person = { name: "박투썸", age: 22 };
const human = { name: "김투썸", age: 24 };
introduce(person); // "제 이름은 박투썸 입니다. 나이는 22 입니다."
introduce(human); // "제 이름은 김투썸 입니다. 나이는 24 입니다."
함수가 객체를 매개변수로 받을 때 필요한 속성만 쉽게 추출할 수 있다.
person 과 human 처럼 객체값이 서로 다른 변수를
인자로 전달하면 간단하게 결과값을 수정할 수 있다.
2) 배열 구조 분해
function sum([a, b]) {
return a + b;
}
console.log(sum([5, 10])); // 15
console.log(sum([7, 18])); // 25
함수의 매개변수로 배열을 받을 때
개별 요소를 손쉽게 변수로 가져올 수 있다.
배열값만 수정해주면 원하는 결과를 받을 수 있다.
객체나 배열이 중첩된 경우에도 구조 분해 할당을 활용할 수 있다.
const user = {
id: 1,
profile: {
username: "김자바",
email: "kimjava@example.com"
}
};
const { profile: { username, email } } = user;
console.log(username); // "김자바"
console.log(email); // "kimjava@example.com"
user 객체의 profile 속성 내부에 있는
username과 email을 한번에 가져올 수 있다.
중첩된 데이터를 다룰 때 매우 유용하고, 불필요한 접근을 줄일 수 있다.
🔹 배열(Array) 구조 분해 할당
배열 값을 개별 변수에 할당 가능, 기본값 및 나머지 요소 할당 가능
🔹 객체(Object) 구조 분해 할당
속성값을 변수에 할당, 변수명 변경 및 기본값 설정 가능
🔹 함수 매개변수에서 구조 분해 할당
함수 호출 시 객체나 배열을 분해하여 인자로 전달 가능
🔹 중첩 구조 분해(Nested Destructuring)
객체나 배열이 중첩된 경우에도 구조 분해 할당 활용 가능