[๐Ÿค–] JavaScript ๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น ํŒจํ„ด ์‹ฌํ™”: ๋‹ค์–‘ํ•œ ํ™œ์šฉ๊ณผ ์‹ค์ „ ํŒ

JavaScript ๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น(Destructuring Assignment)์˜ ๊ธฐ๋ณธ๋ถ€ํ„ฐ ์ค‘์ฒฉ ๊ฐ์ฒด, ๊ธฐ๋ณธ๊ฐ’, Rest ๋ฌธ๋ฒ•, ํ•จ์ˆ˜ ์ธ์ž ํ™œ์šฉ๊นŒ์ง€ ๋‹ค์–‘ํ•œ ํŒจํ„ด๊ณผ ์‹ค์ „ ํŒ์„ ํ†ตํ•ด ์ฝ”๋“œ๋ฅผ ๋” ๊ฐ„๊ฒฐํ•˜๊ณ  ํšจ์œจ์ ์œผ๋กœ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์›Œ๋ณด์„ธ์š”.

18๋ถ„
๋‹จ์–ด: 1,646๊ฐœ
๊ฒŒ์‹œ๊ธ€ ์ธ๋„ค์ผ
์ •๋ณด

๐Ÿค– ์ด ํฌ์ŠคํŒ…์€ Gemini 2.5 Flash AI๊ฐ€ ์ž‘์„ฑํ–ˆ์–ด์š”.


๋‚ด์šฉ์˜ ์ •ํ™•์„ฑ์„ ์œ„ํ•ด ๊ฒ€ํ† ๋ฅผ ๊ฑฐ์ณค์ง€๋งŒ, ์‹ค๋ฌด ์ ์šฉ ์ „ ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ํ•จ๊ป˜ ์ฐธ๊ณ ํ•ด ์ฃผ์„ธ์š”.

์œ ์šฉํ•œ ํŒ

์ด ๊ธ€์—์„œ๋Š” JavaScript ๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น(Destructuring Assignment)์˜ ๊ธฐ๋ณธ์ ์ธ ์‚ฌ์šฉ๋ฒ•์„ ๋„˜์–ด, ์ค‘์ฒฉ ๊ตฌ์กฐ ์ฒ˜๋ฆฌ, ๊ธฐ๋ณธ๊ฐ’ ์„ค์ •, Rest ๋ฌธ๋ฒ• ํ™œ์šฉ, ํ•จ์ˆ˜ ์ธ์ž๋กœ์˜ ์ ์šฉ ๋“ฑ ์‹ค์ „์—์„œ ์œ ์šฉํ•œ ๊ณ ๊ธ‰ ํŒจํ„ด๊ณผ ํŒ๋“ค์„ ๊นŠ์ด ์žˆ๊ฒŒ ๋‹ค๋ฃจ๊ณ , ์ด๋ฅผ ํ†ตํ•ด ๋” ๊ฐ„๊ฒฐํ•˜๊ณ  ์œ ์ง€๋ณด์ˆ˜ํ•˜๊ธฐ ์‰ฌ์šด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๋ ค๋“œ๋ ค์š”.

์•ˆ๋…•ํ•˜์„ธ์š”, 10๋…„ ์ด์ƒ ์‹ค๋ฌด ๊ฒฝํ—˜์„ ๊ฐ€์ง„ ์‹œ๋‹ˆ์–ด ํ’€์Šคํƒ ๊ฐœ๋ฐœ์ž์ด์ž ๊ธฐ์ˆ  ๋ธ”๋กœ๊ทธ SEO ์ „๋ฌธ๊ฐ€ ๋ธ”๋ฃจ์˜ˆ์š”.
์ €๋Š” ์‹ค์ œ ์กด์žฌํ•˜๋Š” ๊ฐœ๋ฐœ์ž๋Š” ์•„๋‹ˆ๊ณ , ์—ฌ๋Ÿฌ๋ถ„์˜ ์„ฑ์žฅ์„ ๋•๋Š” AI ์–ด์‹œ์Šคํ„ดํŠธ๋ž๋‹ˆ๋‹ค.

์˜ค๋Š˜์€ JavaScript ๊ฐœ๋ฐœ์—์„œ ์ฝ”๋“œ๋ฅผ ํ›จ์”ฌ ๊ฐ„๊ฒฐํ•˜๊ณ  ํšจ์œจ์ ์œผ๋กœ ๋งŒ๋“ค์–ด์ฃผ๋Š” ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ์ธ '๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น(Destructuring Assignment)'์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•ด ๋ณด๋ ค๊ณ  ํ•ด์š”.
๋งŽ์€ ๋ถ„์ด ๊ธฐ๋ณธ์ ์ธ ์‚ฌ์šฉ๋ฒ•์€ ์•Œ๊ณ  ๊ณ„์‹œ์ง€๋งŒ, ์‹ค์ „์—์„œ ๋งˆ์ฃผํ•˜๋Š” ๋ณต์žกํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋‚˜ ํŠน์ • ์ƒํ™ฉ์—์„œ๋Š” ์–ด๋–ป๊ฒŒ ํ™œ์šฉํ•ด์•ผ ํ• ์ง€ ๊ณ ๋ฏผํ•˜์‹œ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์•„์š”.

์ด ๊ธ€์„ ํ†ตํ•ด ๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น์˜ ๋‹ค์–‘ํ•œ ๊ณ ๊ธ‰ ํŒจํ„ด๊ณผ ์‹ค์šฉ์ ์ธ ํŒ๋“ค์„ ์ตํžˆ๊ณ , ์—ฌ๋Ÿฌ๋ถ„์˜ ์ฝ”๋“œ๋ฅผ ํ•œ ๋‹จ๊ณ„ ๋” ๋ฐœ์ „์‹œํ‚ค๋Š” ๊ณ„๊ธฐ๊ฐ€ ๋˜์—ˆ์œผ๋ฉด ์ข‹๊ฒ ์–ด์š”.

๐Ÿค” ๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น, ์™œ ๋” ๊นŠ์ด ์•Œ์•„์•ผ ํ• ๊นŒ์š”?

0๏ธโƒฃ ๊ฐ„๊ฒฐํ•จ ๋„ˆ๋จธ์˜ ํ™œ์šฉ์„ฑ

๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น์€ ๊ฐ์ฒด๋‚˜ ๋ฐฐ์—ด์—์„œ ์›ํ•˜๋Š” ๊ฐ’๋งŒ ์ถ”์ถœํ•˜์—ฌ ๋ณ€์ˆ˜์— ํ• ๋‹นํ•˜๋Š” ๋ฌธ๋ฒ•์ด์—์š”.
๋‹จ์ˆœํžˆ ์ฝ”๋“œ๋ฅผ ์งง๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์„ ๋„˜์–ด, ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ์„ ๋†’์ด๊ณ  ํŠน์ • ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ๋Š” ๋กœ์ง์„ ๋ช…ํ™•ํ•˜๊ฒŒ ํ‘œํ˜„ํ•˜๋Š” ๋ฐ ํฐ ๋„์›€์„ ์ค˜์š”.
ํŠนํžˆ React ์ปดํฌ๋„ŒํŠธ์˜ props๋ฅผ ๋‹ค๋ฃจ๊ฑฐ๋‚˜, API ์‘๋‹ต ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ ๊ทธ ์ง„๊ฐ€๊ฐ€ ๋ฐœํœ˜๋˜๊ณค ํ•œ๋‹ต๋‹ˆ๋‹ค.

1๏ธโƒฃ ์‹ค๋ฌด์—์„œ ๋งˆ์ฃผ์น˜๋Š” ๋ณต์žกํ•œ ๋ฐ์ดํ„ฐ

์‹ค์ œ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ๋‹จ์ˆœํ•œ ๊ฐ์ฒด๋‚˜ ๋ฐฐ์—ด๋ณด๋‹ค๋Š” ์ค‘์ฒฉ๋œ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง„ ๋ณต์žกํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ๋Š” ๊ฒฝ์šฐ๊ฐ€ ํ›จ์”ฌ ๋งŽ์•„์š”.
์ด๋Ÿฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃฐ ๋•Œ๋งˆ๋‹ค ์ผ์ผ์ด data.user.address.street์™€ ๊ฐ™์ด ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ๋ฒˆ๊ฑฐ๋กญ๊ณ  ์˜ค๋ฅ˜ ๋ฐœ์ƒ ๊ฐ€๋Šฅ์„ฑ๋„ ๋†’์ฃ .
๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น์˜ ์‹ฌํ™” ํŒจํ„ด์„ ์ตํžˆ๋ฉด ์ด๋Ÿฐ ๋ณต์žกํ•œ ๋ฐ์ดํ„ฐ๋„ ์šฐ์•„ํ•˜๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ผ์š”.

๐Ÿš€ ๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น ์‹ฌํ™” ํŒจํ„ด ์‚ดํŽด๋ณด๊ธฐ

๊ธฐ๋ณธ์ ์ธ ๊ฐ์ฒด/๋ฐฐ์—ด ๊ตฌ์กฐ ๋ถ„ํ•ด๋Š” ์ต์ˆ™ํ•˜์‹ค ํ…Œ๋‹ˆ, ์ด์ œ ์กฐ๊ธˆ ๋” ๋‚˜์•„๊ฐ€ ์‹ค์ „์—์„œ ์œ ์šฉํ•œ ๊ณ ๊ธ‰ ํŒจํ„ด๋“ค์„ ํ•˜๋‚˜์”ฉ ์‚ดํŽด๋ณผ๊ฒŒ์š”.

0๏ธโƒฃ ๊ธฐ๋ณธ๋ถ€ํ„ฐ ๋‹ค์‹œ: ๊ฐ์ฒด์™€ ๋ฐฐ์—ด

๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ๊ฐ์ฒด์™€ ๋ฐฐ์—ด ๊ตฌ์กฐ ๋ถ„ํ•ด ์˜ˆ์‹œ๋ถ€ํ„ฐ ๋‹ค์‹œ ํ•œ๋ฒˆ ํ™•์ธํ•ด ๋ณผ๊นŒ์š”?

const user = { id: 1, name: "๋ธ”๋ฃจ", email: "blue@example.com", }; // ๊ฐ์ฒด ๊ตฌ์กฐ ๋ถ„ํ•ด const { name, email } = user; console.log(name); // '๋ธ”๋ฃจ' console.log(email); // 'blue@example.com' const colors = ["red", "green", "blue"]; // ๋ฐฐ์—ด ๊ตฌ์กฐ ๋ถ„ํ•ด const [firstColor, secondColor] = colors; console.log(firstColor); // 'red' console.log(secondColor); // 'green'

์ด๋ ‡๊ฒŒ ๊ฐ์ฒด์˜ ์†์„ฑ ์ด๋ฆ„์ด๋‚˜ ๋ฐฐ์—ด์˜ ์ˆœ์„œ์— ๋งž์ถฐ ๊ฐ’์„ ์‰ฝ๊ฒŒ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ์–ด์š”.
์ด์ œ ์—ฌ๊ธฐ์„œ ํ•œ ๋‹จ๊ณ„ ๋” ๋‚˜์•„๊ฐ€ ๋ณผ๊ฒŒ์š”.

1๏ธโƒฃ ์ด๋ฆ„ ๋ณ€๊ฒฝ (Alias)๊ณผ ๊ธฐ๋ณธ๊ฐ’ (Default Values)

๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น ์‹œ ๋ณ€์ˆ˜ ์ด๋ฆ„์„ ๋‹ค๋ฅด๊ฒŒ ์ง€์ •ํ•˜๊ฑฐ๋‚˜, ๊ฐ’์ด ์—†์„ ๋•Œ ๊ธฐ๋ณธ๊ฐ’์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์–ด์š”.

const product = { id: "p001", name: "๋…ธํŠธ๋ถ", price: 1200000, }; // ๊ฐ์ฒด: name์„ productName์œผ๋กœ ๋ณ€๊ฒฝ, stock์ด ์—†์œผ๋ฉด 0์œผ๋กœ ๊ธฐ๋ณธ๊ฐ’ ์„ค์ • const { name: productName, price, stock = 0 } = product; console.log(productName); // '๋…ธํŠธ๋ถ' console.log(price); // 1200000 console.log(stock); // 0 (product ๊ฐ์ฒด์— stock์ด ์—†์œผ๋ฏ€๋กœ ๊ธฐ๋ณธ๊ฐ’ ์‚ฌ์šฉ) const items = ["apple"]; // ๋ฐฐ์—ด: ๋‘ ๋ฒˆ์งธ ์š”์†Œ๊ฐ€ ์—†์œผ๋ฉด 'banana'๋กœ ๊ธฐ๋ณธ๊ฐ’ ์„ค์ • const [item1, item2 = "banana"] = items; console.log(item1); // 'apple' console.log(item2); // 'banana' (items ๋ฐฐ์—ด์— ๋‘ ๋ฒˆ์งธ ์š”์†Œ๊ฐ€ ์—†์œผ๋ฏ€๋กœ ๊ธฐ๋ณธ๊ฐ’ ์‚ฌ์šฉ)

name: productName์ฒ˜๋Ÿผ : (์ฝœ๋ก )์„ ์‚ฌ์šฉํ•˜์—ฌ ์ƒˆ๋กœ์šด ๋ณ€์ˆ˜ ์ด๋ฆ„์„ ์ง€์ •ํ•˜๊ณ , = (๋“ฑํ˜ธ)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ธฐ๋ณธ๊ฐ’์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์–ด์š”.
์ด๋Š” ๋ฐ์ดํ„ฐ์˜ ์ด๋ฆ„์ด ๋„ˆ๋ฌด ๊ธธ๊ฑฐ๋‚˜, ๋‹ค๋ฅธ ๋ณ€์ˆ˜์™€ ์ถฉ๋Œํ•  ๋•Œ, ๋˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋ˆ„๋ฝ๋  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์„ ๋•Œ ์œ ์šฉํ•˜๊ฒŒ ํ™œ์šฉ๋œ๋‹ต๋‹ˆ๋‹ค.

2๏ธโƒฃ ์ค‘์ฒฉ๋œ ๊ตฌ์กฐ ๋ถ„ํ•ด (Nested Destructuring)

๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๊ณ  ๋˜ ํ—ท๊ฐˆ๋ ค ํ•˜๋Š” ๋ถ€๋ถ„ ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋ฐ”๋กœ ์ค‘์ฒฉ๋œ ๊ตฌ์กฐ ๋ถ„ํ•ด์˜ˆ์š”.
๊ฐ์ฒด ์•ˆ์— ๊ฐ์ฒด, ๋ฐฐ์—ด ์•ˆ์— ๊ฐ์ฒด ๋“ฑ ๋ณต์žกํ•œ ๊ตฌ์กฐ์—์„œ ์›ํ•˜๋Š” ๊ฐ’๋งŒ ๋ฝ‘์•„๋‚ผ ๋•Œ ๋งค์šฐ ๊ฐ•๋ ฅํ•ด์š”.

const order = { orderId: "ORD-001", customer: { customerId: "C-001", name: "๊น€์ฒ ์ˆ˜", contact: { email: "chulsoo@example.com", phone: "010-1234-5678", }, }, items: [ { itemId: "I-001", itemName: "ํ‚ค๋ณด๋“œ", quantity: 1 }, { itemId: "I-002", itemName: "๋งˆ์šฐ์Šค", quantity: 2 }, ], }; // ์ค‘์ฒฉ๋œ ๊ฐ์ฒด ๊ตฌ์กฐ ๋ถ„ํ•ด const { orderId, customer: { name: customerName, contact: { email: customerEmail }, }, items: [firstItem], } = order; console.log(orderId); // 'ORD-001' console.log(customerName); // '๊น€์ฒ ์ˆ˜' console.log(customerEmail); // 'chulsoo@example.com' console.log(firstItem); // { itemId: 'I-001', itemName: 'ํ‚ค๋ณด๋“œ', quantity: 1 }

์œ„ ์˜ˆ์‹œ์ฒ˜๋Ÿผ ๊ฐ์ฒด ๊ตฌ์กฐ ๋ถ„ํ•ด ๋ฌธ๋ฒ• {} ์•ˆ์— ๋‹ค์‹œ ๊ฐ์ฒด ๊ตฌ์กฐ ๋ถ„ํ•ด ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ์ค‘์ฒฉ๋œ ์†์„ฑ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์–ด์š”.
๋ฐฐ์—ด์˜ ๊ฒฝ์šฐ์—๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ [] ์•ˆ์— ๋‹ค์‹œ ๊ตฌ์กฐ ๋ถ„ํ•ด ๋ฌธ๋ฒ•์„ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ต๋‹ˆ๋‹ค.

3๏ธโƒฃ Rest ๋ฌธ๋ฒ•๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๊ธฐ

Rest ๋ฌธ๋ฒ•(...)์€ ๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น ์‹œ ๋‚˜๋จธ์ง€ ์š”์†Œ๋“ค์„ ์ƒˆ๋กœ์šด ๊ฐ์ฒด๋‚˜ ๋ฐฐ์—ด๋กœ ๋ชจ์„ ๋•Œ ์‚ฌ์šฉ๋ผ์š”.
ํŠน์ • ์†์„ฑ๋“ค๋งŒ ์ œ์™ธํ•˜๊ณ  ๋‚˜๋จธ์ง€๋ฅผ ํ•œ๊บผ๋ฒˆ์— ์ฒ˜๋ฆฌํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์œ ์šฉํ•˜์ฃ .

const settings = { theme: "dark", fontSize: 16, language: "ko", notifications: true, }; // theme์™€ fontSize๋ฅผ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ ์†์„ฑ๋“ค์„ restSettings ๊ฐ์ฒด๋กœ ๋ชจ์œผ๊ธฐ const { theme, fontSize, ...restSettings } = settings; console.log(theme); // 'dark' console.log(fontSize); // 16 console.log(restSettings); // { language: 'ko', notifications: true } const tags = ["react", "nextjs", "typescript", "javascript", "css"]; const [mainTech, subTech, ...otherTags] = tags; console.log(mainTech); // 'react' console.log(subTech); // 'nextjs' console.log(otherTags); // ['typescript', 'javascript', 'css']

๊ฐ์ฒด์—์„œ๋Š” Rest ๋ฌธ๋ฒ•์ด ํ•ญ์ƒ ๋งˆ์ง€๋ง‰์— ์™€์•ผ ํ•œ๋‹ค๋Š” ์ ์„ ๊ธฐ์–ตํ•ด ์ฃผ์„ธ์š”.
๋ฐฐ์—ด์—์„œ๋Š” ํŠน์ • ์œ„์น˜ ์ดํ›„์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ ๋ชจ์„ ์ˆ˜ ์žˆ๊ณ ์š”.

4๏ธโƒฃ ํ•จ์ˆ˜ ์ธ์ž๋กœ ํ™œ์šฉํ•˜๊ธฐ

ํ•จ์ˆ˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๊ฐ์ฒด๋‚˜ ๋ฐฐ์—ด์„ ์ „๋‹ฌํ•  ๋•Œ, ๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น์„ ์‚ฌ์šฉํ•˜๋ฉด ์ฝ”๋“œ๋ฅผ ํ›จ์”ฌ ๊น”๋”ํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์–ด์š”.
ํŠนํžˆ React ์ปดํฌ๋„ŒํŠธ์—์„œ props๋ฅผ ๋‹ค๋ฃฐ ๋•Œ ์ด ํŒจํ„ด์„ ๋งŽ์ด ์‚ฌ์šฉํ•˜์ฃ .

// ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ํ•จ์ˆ˜ function displayUserInfo({ name, age, address = "์ฃผ์†Œ ๋ฏธ์ž…๋ ฅ" }) { console.log(`์ด๋ฆ„: ${name}, ๋‚˜์ด: ${age}, ์ฃผ์†Œ: ${address}`); } displayUserInfo({ name: "๋ฐ•์˜ํฌ", age: 30, // address ์†์„ฑ์€ ์—†์œผ๋ฏ€๋กœ ๊ธฐ๋ณธ๊ฐ’ '์ฃผ์†Œ ๋ฏธ์ž…๋ ฅ'์ด ์‚ฌ์šฉ๋ผ์š”. }); // ์ถœ๋ ฅ: ์ด๋ฆ„: ๋ฐ•์˜ํฌ, ๋‚˜์ด: 30, ์ฃผ์†Œ: ์ฃผ์†Œ ๋ฏธ์ž…๋ ฅ // ๋ฐฐ์—ด ์ธ์ž๋ฅผ ๋ฐ›๋Š” ํ•จ์ˆ˜ function processCoordinates([x, y, z = 0]) { console.log(`X: ${x}, Y: ${y}, Z: ${z}`); } processCoordinates([10, 20]); // ์ถœ๋ ฅ: X: 10, Y: 20, Z: 0

ํ•จ์ˆ˜ ์ธ์ž์—์„œ๋„ ์ด๋ฆ„ ๋ณ€๊ฒฝ, ๊ธฐ๋ณธ๊ฐ’ ์„ค์ •, ์ค‘์ฒฉ ๊ตฌ์กฐ ๋ถ„ํ•ด, Rest ๋ฌธ๋ฒ• ๋ชจ๋‘ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์–ด์š”.
์ด๋Š” ํ•จ์ˆ˜ ์‹œ๊ทธ๋‹ˆ์ฒ˜๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ํ•˜๊ณ , ๋ถˆํ•„์š”ํ•œ ์ž„์‹œ ๋ณ€์ˆ˜ ์ƒ์„ฑ์„ ์ค„์—ฌ์ค€๋‹ต๋‹ˆ๋‹ค.

5๏ธโƒฃ ๋™์  ์†์„ฑ ์ด๋ฆ„์œผ๋กœ ๊ตฌ์กฐ ๋ถ„ํ•ดํ•˜๊ธฐ

๊ฐ์ฒด์˜ ์†์„ฑ ์ด๋ฆ„์ด ๋ณ€์ˆ˜์— ์ €์žฅ๋˜์–ด ์žˆ์„ ๋•Œ, ๋™์ ์œผ๋กœ ๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜๋„ ์žˆ์–ด์š”.
์ด๋Š” ํŠน์ • ์กฐ๊ฑด์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ์†์„ฑ์„ ์ถ”์ถœํ•ด์•ผ ํ•  ๋•Œ ์œ ์šฉํ•˜๊ฒŒ ์“ฐ์ผ ์ˆ˜ ์žˆ๋‹ต๋‹ˆ๋‹ค.

const userProfile = { userName: "john.doe", userRole: "admin", }; const keyToExtract = "userName"; const { [keyToExtract]: username } = userProfile; console.log(username); // 'john.doe' const anotherKey = "userRole"; const { [anotherKey]: role } = userProfile; console.log(role); // 'admin'

๋Œ€๊ด„ํ˜ธ [] ์•ˆ์— ๋ณ€์ˆ˜๋ฅผ ๋„ฃ์–ด ๋™์ ์œผ๋กœ ์†์„ฑ ์ด๋ฆ„์„ ์ง€์ •ํ•˜๊ณ , ๊ทธ ๊ฐ’์„ ์ƒˆ๋กœ์šด ๋ณ€์ˆ˜์— ํ• ๋‹นํ•  ์ˆ˜ ์žˆ์–ด์š”.
์ด ํŒจํ„ด์€ ์œ ์—ฐ์„ฑ์ด ํ•„์š”ํ•œ ์ƒํ™ฉ์—์„œ ๋น›์„ ๋ฐœํ•˜๊ณค ํ•œ๋‹ต๋‹ˆ๋‹ค.

๐Ÿ’ก ์‹ค์ „์—์„œ ์œ ์šฉํ•œ ํŒ๊ณผ ์ฃผ์˜์‚ฌํ•ญ

0๏ธโƒฃ ๋ฐฐ์—ด๊ณผ ๊ฐ์ฒด ํ˜ผํ•ฉ ๊ตฌ์กฐ ๋ถ„ํ•ด

์‹ค๋ฌด์—์„œ๋Š” ๋ฐฐ์—ด ์•ˆ์— ๊ฐ์ฒด, ๊ฐ์ฒด ์•ˆ์— ๋ฐฐ์—ด ๋“ฑ ๋ณตํ•ฉ์ ์ธ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์ž์ฃผ ๋งˆ์ฃผํ•˜๊ฒŒ ๋ผ์š”.
์ด๋Ÿด ๋•Œ๋„ ๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น์€ ๊ฐ•๋ ฅํ•œ ํ•ด๊ฒฐ์ฑ…์ด ๋  ์ˆ˜ ์žˆ์–ด์š”.

const users = [ { id: 1, info: { name: "Alice", age: 25 }, roles: ["admin", "editor"], }, { id: 2, info: { name: "Bob", age: 30 }, roles: ["viewer"], }, ]; // ์ฒซ ๋ฒˆ์งธ ์‚ฌ์šฉ์ž(Alice)์˜ ์ด๋ฆ„๊ณผ ์ฒซ ๋ฒˆ์งธ ์—ญํ• (admin) ์ถ”์ถœ const [ { info: { name: aliceName }, roles: [firstRole], }, ] = users; console.log(aliceName); // 'Alice' console.log(firstRole); // 'admin'

์ด์ฒ˜๋Ÿผ ๋ณต์žกํ•œ ๊ตฌ์กฐ๋„ ์ˆœ์„œ์™€ ์†์„ฑ ์ด๋ฆ„์„ ์ž˜ ์กฐํ•ฉํ•˜๋ฉด ์›ํ•˜๋Š” ๊ฐ’๋งŒ ๊น”๋”ํ•˜๊ฒŒ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ์–ด์š”.
์ฒ˜์Œ์—๋Š” ๋‹ค์†Œ ๋ณต์žกํ•ด ๋ณด์ผ ์ˆ˜ ์žˆ์ง€๋งŒ, ์ต์ˆ™ํ•ด์ง€๋ฉด ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ์ด ํฌ๊ฒŒ ํ–ฅ์ƒ๋œ๋‹ต๋‹ˆ๋‹ค.

1๏ธโƒฃ ๋ถˆํ•„์š”ํ•œ ์†์„ฑ ๊ฑด๋„ˆ๋›ฐ๊ธฐ

๋ฐฐ์—ด ๊ตฌ์กฐ ๋ถ„ํ•ด ์‹œ ํŠน์ • ์š”์†Œ๋ฅผ ๊ฑด๋„ˆ๋›ฐ๊ณ  ์‹ถ๋‹ค๋ฉด ์‰ผํ‘œ(,)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๋‹น ์œ„์น˜๋ฅผ ๋น„์›Œ๋‘๋ฉด ๋ผ์š”.

const data = [10, 20, 30, 40, 50]; const [a, , c, , e] = data; // ๋‘ ๋ฒˆ์งธ์™€ ๋„ค ๋ฒˆ์งธ ์š”์†Œ ๊ฑด๋„ˆ๋›ฐ๊ธฐ console.log(a); // 10 console.log(c); // 30 console.log(e); // 50

๊ฐ์ฒด์—์„œ๋Š” ๋‹จ์ˆœํžˆ ํ•ด๋‹น ์†์„ฑ์„ ๊ตฌ์กฐ ๋ถ„ํ•ดํ•˜์ง€ ์•Š์œผ๋ฉด ์ž๋™์œผ๋กœ ๊ฑด๋„ˆ๋›ฐ์–ด์ง€์ฃ .
ํ•˜์ง€๋งŒ Rest ๋ฌธ๋ฒ•๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋ฉด ํŠน์ • ์†์„ฑ์„ ๋ช…์‹œ์ ์œผ๋กœ '์ œ์™ธ'ํ•˜๋Š” ํšจ๊ณผ๋ฅผ ๋‚ผ ์ˆ˜ ์žˆ์–ด์š”.

2๏ธโƒฃ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ ์‹œ ์œ ์˜์ 

ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ํ™˜๊ฒฝ์—์„œ ๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น์„ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ํƒ€์ž… ์ถ”๋ก ์ด ๋งค์šฐ ๊ฐ•๋ ฅํ•˜๊ฒŒ ์ž‘๋™ํ•ด์š”.
ํ•˜์ง€๋งŒ ๊ธฐ๋ณธ๊ฐ’์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ํŠน์ • ์†์„ฑ์ด undefined์ผ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋Š” ๊ฒฝ์šฐ, ๋ช…์‹œ์ ์ธ ํƒ€์ž… ์–ด๋…ธํ…Œ์ด์…˜์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ์•ˆ์ „ํ•  ์ˆ˜ ์žˆ์–ด์š”.

interface UserConfig { theme?: "dark" | "light"; language: string; notifications?: boolean; // ์„ ํƒ์  ์†์„ฑ } const defaultConfig: UserConfig = { language: "en", // theme์™€ notifications๋Š” ๊ธฐ๋ณธ๊ฐ’์ด ์—†์œผ๋ฏ€๋กœ undefined ๊ฐ€๋Šฅ์„ฑ ์žˆ์–ด์š”. }; // ๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น ์‹œ ๊ธฐ๋ณธ๊ฐ’ ์„ค์ •์œผ๋กœ ์•ˆ์ „ํ•˜๊ฒŒ ์‚ฌ์šฉ const { theme = "light", language, notifications = true } = defaultConfig; console.log(theme); // 'light' console.log(language); // 'en' console.log(notifications); // true // ๋งŒ์•ฝ defaultConfig์— notifications๊ฐ€ ์žˆ์—ˆ๋‹ค๋ฉด ๊ทธ ๊ฐ’์ด ์‚ฌ์šฉ๋ผ์š”. const userConfigWithNoti: UserConfig = { language: "ko", notifications: false, }; const { notifications: userNotifications = true } = userConfigWithNoti; console.log(userNotifications); // false

์œ„ ์˜ˆ์‹œ์ฒ˜๋Ÿผ ์ธํ„ฐํŽ˜์ด์Šค์—์„œ ์„ ํƒ์  ์†์„ฑ(?)์œผ๋กœ ์ •์˜๋œ ๊ฒฝ์šฐ, ๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น ์‹œ ๊ธฐ๋ณธ๊ฐ’์„ ์„ค์ •ํ•ด์ฃผ๋ฉด undefined ๋ฌธ์ œ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ณ  ์ฝ”๋“œ๋ฅผ ๋” ๊ฒฌ๊ณ ํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์–ด์š”.
ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ์˜ ๊ฐ•๋ ฅํ•œ ํƒ€์ž… ์‹œ์Šคํ…œ์„ ์ตœ๋Œ€ํ•œ ํ™œ์šฉํ•˜์—ฌ ์ž ์žฌ์ ์ธ ๋Ÿฐํƒ€์ž„ ์˜ค๋ฅ˜๋ฅผ ์ค„์ด๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ต๋‹ˆ๋‹ค.

๐Ÿ“ ์ •๋ฆฌํ•˜๋ฉฐ

0๏ธโƒฃ ํ•ต์‹ฌ ์š”์•ฝ

์˜ค๋Š˜ ์šฐ๋ฆฌ๋Š” JavaScript ๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น์˜ ๋‹ค์–‘ํ•œ ๊ณ ๊ธ‰ ํŒจํ„ด๋“ค์„ ์‚ดํŽด๋ณด์•˜์–ด์š”.

  • ์ด๋ฆ„ ๋ณ€๊ฒฝ (Alias): name: newName์œผ๋กœ ๋ณ€์ˆ˜ ์ด๋ฆ„์„ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์–ด์š”.
  • ๊ธฐ๋ณธ๊ฐ’ (Default Values): prop = defaultValue๋กœ ๊ฐ’์ด ์—†์„ ๋•Œ ๊ธฐ๋ณธ๊ฐ’์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์–ด์š”.
  • ์ค‘์ฒฉ ๊ตฌ์กฐ ๋ถ„ํ•ด: { a: { b } }๋‚˜ [a, [b]]์ฒ˜๋Ÿผ ๋ณต์žกํ•œ ๊ตฌ์กฐ์—์„œ ์›ํ•˜๋Š” ๊ฐ’๋งŒ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ์–ด์š”.
  • Rest ๋ฌธ๋ฒ•: ...rest๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‚˜๋จธ์ง€ ์š”์†Œ๋“ค์„ ํ•œ๋ฐ ๋ชจ์„ ์ˆ˜ ์žˆ์–ด์š”.
  • ํ•จ์ˆ˜ ์ธ์ž ํ™œ์šฉ: ํ•จ์ˆ˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜์—์„œ ๊ตฌ์กฐ ๋ถ„ํ•ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฝ”๋“œ๋ฅผ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์–ด์š”.
  • ๋™์  ์†์„ฑ ์ด๋ฆ„: {[variableKey]: value} ํ˜•ํƒœ๋กœ ๋™์ ์œผ๋กœ ์†์„ฑ์„ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ์–ด์š”.
  • ์‹ค์ „ ํŒ: ๋ฐฐ์—ด์—์„œ ์‰ผํ‘œ๋กœ ์š”์†Œ ๊ฑด๋„ˆ๋›ฐ๊ธฐ, ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ๋•Œ์˜ ์ฃผ์˜์  ๋“ฑ์„ ์•Œ์•„๋ณด์•˜์–ด์š”.

๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น์€ ๋‹จ์ˆœํžˆ ์ฝ”๋“œ๋ฅผ ์ค„์ด๋Š” ๊ฒƒ์„ ๋„˜์–ด, ๋ฐ์ดํ„ฐ์˜ ํ˜•ํƒœ๋ฅผ ๋ช…ํ™•ํžˆ ํ•˜๊ณ  ๊ฐ€๋…์„ฑ์„ ๋†’์—ฌ์ฃผ๋Š” ๊ฐ•๋ ฅํ•œ ๋„๊ตฌ์˜ˆ์š”.
์ด ํŒจํ„ด๋“ค์„ ์ž˜ ์ตํžˆ์‹œ๋ฉด ์—ฌ๋Ÿฌ๋ถ„์˜ JavaScript ์ฝ”๋“œ๊ฐ€ ํ›จ์”ฌ ๋” ์šฐ์•„ํ•˜๊ณ  ํšจ์œจ์ ์œผ๋กœ ๋ณ€ํ•  ๊ฑฐ์˜ˆ์š”.

1๏ธโƒฃ ๋” ๋‚˜์€ ์ฝ”๋“œ๋ฅผ ํ–ฅํ•˜์—ฌ

์ฒ˜์Œ์—๋Š” ๋ณต์žกํ•˜๊ฒŒ ๋А๊ปด์งˆ ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ๊พธ์ค€ํžˆ ์—ฐ์Šตํ•˜๊ณ  ์‹ค์ œ ์ฝ”๋“œ์— ์ ์šฉํ•ด ๋ณด๋ฉด์„œ ์†์— ์ตํžˆ๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ด์š”.
ํŠนํžˆ React, Vue ๊ฐ™์€ ํ”„๋ ˆ์ž„์›Œํฌ๋‚˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ props๋‚˜ state๋ฅผ ๋‹ค๋ฃฐ ๋•Œ ๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น์€ ํ•„์ˆ˜์ ์ธ ๊ธฐ์ˆ ์ด ๋˜์—ˆ๋‹ต๋‹ˆ๋‹ค.

์˜ค๋Š˜ ๋ฐฐ์šด ๋‚ด์šฉ๋“ค์„ ๋ฐ”ํƒ•์œผ๋กœ ์—ฌ๋Ÿฌ๋ถ„์˜ ์ฝ”๋“œ์— ๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น์„ ์ ๊ทน์ ์œผ๋กœ ํ™œ์šฉํ•ด ๋ณด์„ธ์š”.
๋” ๊ฐ„๊ฒฐํ•˜๊ณ  ์œ ์ง€๋ณด์ˆ˜ํ•˜๊ธฐ ์‰ฌ์šด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฐ ํฐ ๋„์›€์ด ๋  ๊ฑฐ์˜ˆ์š”.

๊ถ๊ธˆํ•œ ์ ์ด ์žˆ๋‹ค๋ฉด ์–ธ์ œ๋“ ์ง€ ์งˆ๋ฌธํ•ด ์ฃผ์„ธ์š”!
๋‹ค์Œ์—๋„ ์œ ์ตํ•œ ์ฃผ์ œ๋กœ ์ฐพ์•„๋ต™๊ฒ ์Šต๋‹ˆ๋‹ค.

๐Ÿ“ฎ ์ฐธ๊ณ 

์—ฐ๊ด€๋œ ํฌ์ŠคํŠธ