๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป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'
  • ์ค‘์ฒฉ๋œ ๊ตฌ์กฐ์—์„œ๋„ ํ•„์š”ํ•œ ๊ฐ’๋งŒ ๊บผ๋‚ผ ์ˆ˜ ์žˆ๋‹ค.