FE/JavaScript
📖 [JS] 구조 분해 할당
serin99
2024. 7. 19. 18:09
728x90
자바스크립트에서 구조 분해 할당이란 배열이나 객체에 저장된 여러 개의 값들을
말 그대로 분해해서 각각 다른 변수에 할당하는 문법을 말합니다.
배열의 구조 분해 할당
let arr = [1, 2, 3];
let one = arr[0];
let two = arr[1];
let three = arr[2];
------------------------------
const arr = [1, 2, 3];
// 기본 배열 구조 분해 할당
const [a, b, c] = arr;
console.log(a); // 1
console.log(b); // 2
console.log(c); // 3
// 일부 요소만 할당
const [x, y] = arr;
console.log(x); // 1
console.log(y); // 2
// 나머지 요소 모으기
const [first, ...rest] = arr;
console.log(first); // 1
console.log(rest); // [2, 3]
배열의 요소를 각각 변수에 할당해 주는 건, 배열의 이름을 각각 매번 적어줘야 하기 때문에 불편함을 느낄 수 있다.
// 배열의 구조 분해 할당
let arr = [1, 2, 3];
let [one, two, three] = arr;
위와 같은 방법으로 배열을 표현하듯이 대괄호 안에 3개의 변수를 동시에 선언하고 초기값으로 arr 배열을 넣어주면 된다.
이렇게 선언하면 arr 배열에 있는 원소들이 각각 순서대로 one = 1, two = 2, three = 3 변수에 각각 할당이 된다.
객체의 구조 분해 할당
let person = {
name: "ser"
age: 26,
hobby: "game",
}
let {name, age, hobby} = person;
----------------------------------
const obj = { name: "Alice", age: 25, city: "Wonderland" };
// 기본 객체 구조 분해 할당
const { name, age, city } = obj;
console.log(name); // Alice
console.log(age); // 25
console.log(city); // Wonderland
// 다른 변수 이름으로 할당
const { name: personName, age: personAge } = obj;
console.log(personName); // Alice
console.log(personAge); // 25
// 기본값 설정
const { country = "Unknown" } = obj;
console.log(country); // Unknown
person이라는 객체를 저장하는 변수가 있다 또는 객체가 있다고 할 때
이 객체 안에 있는 객체 속성 property를 일일이 다 변수에 할당해주려면
name은 person.name, age은 person.age, hobby은 person.hobby << 이런 식으로 일일이 다 했었어야 했지만,
객체 구조분해 할당은 배열의 구조 분해 할당과는 다르게 {}를 사용해서 할당할 수 있습니다.
중첩 구조 분해 할당
const nestedObj = {
person: {
name: "Bob",
address: {
city: "Builderland",
zip: "12345"
}
}
};
const { person: { name, address: { city, zip } } } = nestedObj;
console.log(name); // Bob
console.log(city); // Builderland
console.log(zip); // 12345
const nestedArr = [1, [2, 3], 4];
const [first, [second, third], fourth] = nestedArr;
console.log(first); // 1
console.log(second); // 2
console.log(third); // 3
console.log(fourth); // 4
객체 구조 분해 할당을 이용해서 함수의 매개 변수를 받는 방법
const func = (person) => {
person.name;
person.age....
}
// 위와 같은 방법 대신에
const func = ({name, age, hobby}) => {
console.log(name, age, hobby);
};
func(person)
이때 한 가지 주의해야 할 점은
객체를 넘겼을 때만 중괄호와 함께 구조분해 할당을 받을 수 있다는 것이다.
func(person)처럼 person이라는 객체를 넘겼기 때문에 구조 분해 할당이 가능한 것이고 만약에 일반적인 값인
func(10)을 넘겼으면 당연히 구조분해할당은 이루어지지 않습니다.
728x90