๐ฉ๐ป๐ปSTUDY/JavaScript
๊ตฌ์กฐ๋ถํดํ ๋น
jmjm
2025. 6. 5. 11:23
๊ตฌ์กฐ๋ถํดํ ๋น(Destructuring Assignment)
๋ฐฐ์ด์ด๋ ๊ฐ์ฒด์ ๊ฐ์ ์ฝ๊ฒ ๊บผ๋ด์ ๋ณ์์ ํ ๋นํ ์ ์๊ฒ ํด์ฃผ๋ ES6 ๋ฌธ๋ฒ์ด๋ค.
1. ๋ฐฐ์ด ๊ตฌ์กฐ๋ถํดํ ๋น
1-1. ๊ธฐ๋ณธ์์
const arr = [1,2,3];
const [a,b,c] = arr;
console.log(a); // 1
console.log(b); // 2
console.log(c); // 3
- ๋ฐฐ์ด์ ๊ฐ ์์๊ฐ ์์๋๋ก ๋ณ์์ ํ ๋น๋๋ค.
1-2. ์ผ๋ถ ๊ฐ๋ง ๊บผ๋ด๊ธฐ, ๊ฑด๋๋ฐ๊ธฐ
const arr = [10,20,30,40];
const [fist, , third] = arr;
console.log(first); // 10
console.log(third); // 30
- ๋ ๋ฒ์งธ ๊ฐ์ ๊ฑด๋๋ฐ๊ณ ์ธ ๋ฒ์งธ ๊ฐ์ ๋ฐ๋ก ํ ๋นํ ์ ์๋ค.
1-3. ๋๋จธ์ง(REST) ์ฐ์ฐ์ ์ฌ์ฉ
const arr = [1,2,3,4,5];
const [head, ...rest] = arr;
console.log(head); // 1
console.log(rest); // [2,3,4,5]
- ...rest ๋ ๋จ์ ๊ฐ๋ค์ ๋ฐฐ์ด๋ก ๋ฌถ์ด ์ค๋ค.
1-4. ๊ธฐ๋ณธ๊ฐ ํ ๋น
const arr = [1];
const [x, y = 100] = arr;
console.log(x); // 1
console.log(y); // 100
- ๋ฐฐ์ด์ ๊ฐ์ด ์์ผ๋ฉด ๊ธฐ๋ณธ๊ฐ์ด ํ ๋น๋๋ค.
2. ๊ฐ์ฒด ๊ตฌ์กฐ๋ถํดํ ๋น
2-1. ๊ธฐ๋ณธ ์์
const user = { name: 'Mike', age: 30 };
const { name, age } = user;
console.log(name); // 'Mike'
console.log(age); // 30
- ๊ฐ์ฒด์ ์์ฑ๋ช ์ ๊ธฐ์ค์ผ๋ก ๋ณ์์ ๊ฐ์ ํ ๋นํ๋ค.
2-2. ์์์ ์๊ด์์ด ํ ๋น
const { age, name } = user;
// ์์๋ฅผ ๋ฐ๊ฟ๋ name, age์ ์ฌ๋ฐ๋ฅธ ๊ฐ์ด ํ ๋น ๋จ.
console.log(age); // 30
console.log(name); // 'Mike'
- ๊ฐ์ฒด๋ key๋ก ๋งค์นญ๋๋ฏ๋ก ์์์ ์๊ด์๋ค.
2-3. ์๋ก์ด ๋ณ์ ์ด๋ฆ์ผ๋ก ํ ๋น(๋ณ์นญ)
const user = { name: 'Jane', age: 20 };
const { name: userName, age: usrAge } = user;
console.log(userName); // 'Jane'
console.log(userAge); // 20
- ๋ณ์๋ช ์ ๋ฐ๊ฟ์ ํ ๋นํ ์ ์๋ค.
2-4. ๊ธฐ๋ณธ๊ฐ ํ ๋น
const user = { name: 'Tom' };
const { name, age = 18 } = user;
console.log(name); // 'Tom'
console.log(age); // 18
- ์๋ ์์ฑ์ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ๋์ฒด๋๋ค.
2-5. ๋๋จธ์ง(REST) ์ฐ์ฐ์ ์ฌ์ฉ
const user = { name: 'Alice', age: 30, city: 'Seoul' };
const { name, ...rest } = user;
console.log(name); // 'Alice'
console.log(rest); // { age: 30, city; 'Seoul' };
- ๋๋จธ์ง ์์ฑ๋ค์ ๋ณ๋์ ๊ฐ์ฒด๋ก ๋ฐ์ ์ ์๋ค.
3. ํจ์ ๋งค๊ฐ๋ณ์์์์ ๊ตฌ์กฐ๋ถํดํ ๋น
ํจ์์ ํ๋ผ๋ฏธํฐ์์๋ ์์ฃผ ์ฌ์ฉ๋๋ฉฐ,
ํนํ React์ปดํฌ๋ํธ์์ props๋ฅผ ๊ตฌ์กฐ๋ถํดํ ๋น์ผ๋ก ๊บผ๋ด ์ฐ๋ ๊ฒ์ด ๋ํ์ ์ด๋ค.
function printUser({ name, age}) {
console.log(name, age);
};
const user = { name: 'Sam', age: 25 };
printUser(user); // Sam 25
- ํจ์์ ์ธ์๋ก ๊ฐ์ฒด๊ฐ ๋ค์ด์์ ๋, ํ์ํ ๊ฐ๋ง ๊บผ๋ด์ ์ฌ์ฉํ ์ ์๋ค.
4. ์ค์ฒฉ ๊ตฌ์กฐ๋ถํดํ ๋น
๊ฐ์ฒด ์์ ๊ฐ์ฒด, ๋ฐฐ์ด ์์ ๋ฐฐ์ด ๋ฑ ์ค์ฒฉ๋ ๊ตฌ์กฐ๋ ์ฝ๊ฒ ๋ถํดํ ์ ์๋ค.
const person = {
name: 'Alex',
family: {
mother: 'Jane',
father: 'John'
}
};
const { name: family: { father } } = person;
console.log(name); // 'Alex'
console.log(father); // 'John'
- ์ค์ฒฉ๋ ๊ตฌ์กฐ์์๋ ํ์ํ ๊ฐ๋ง ๊บผ๋ผ ์ ์๋ค.