๐ ๋ค์ด๊ฐ๋ฉฐ
๋ด๊ฐ ์ต๊ทผ์ Vanilla JavaScript๋ฅผ ๊ณต๋ถํ๋ฉด์ ์๊ฒ ๋ ๊ฒ์ด ๋ฐ๋ก ์๋ฐ์คํฌ๋ฆฝํธ ES6 ๋ฌธ๋ฒ์ธ ๊ตฌ์กฐ ๋ถํด ํ ๋น(Destructuring)์ด๋ค.
๊ตฌ์กฐ ๋ถํด ํ ๋น(Destructuring) ๊ฐ์ฒด ๊ตฌ์กฐ ๋ถํด๋ฅผ ์ด์ฉํ์ฌ ๋ณ์๋ฅผ ์์ฑํ๊ฒ ๋๋ฉด, ๋ฐฐ์ด์ด๋, ๊ฐ์ฒด๋ฅผ ์ด์ฉํ ๋ณ์๊ฐ ๊ฐ๊ฒฐํ๋ฉด์๋ ๋ณด๊ธฐ ์ฝ๊ฒ ์์ฑํ ์ ์์ด์ ์ ์ฉํ๋ค.
๊ทธ๋์, ์ด๋ฒ์๋ ๊ฐ๋จํ๊ฒ ๊ตฌ์กฐ ๋ถํด ํ ๋น(Destructuring), ๊ฐ์ฒด ๊ตฌ์กฐ ๋ถํด๊ฐ ๋ฌด์์ด๊ณ , ์ด๋ป๊ฒ ์ฌ์ฉํด์ผ ํ๋์ง ์ ๋ฆฌํด๋ณด๊ฒ ๋ค.
1. ๊ตฌ์กฐ ๋ถํด ํ ๋น(Destructuring)์ด๋ โ
๊ตฌ์กฐ ๋ถํด ํ ๋น ๊ตฌ๋ฌธ์ ๋ฐฐ์ด์ด๋ ๊ฐ์ฒด์ ์์ฑ์ ํด์ฒดํ์ฌ ๊ทธ ๊ฐ์ ๊ฐ๋ณ ๋ณ์์ ๋ด์ ์ ์๊ฒ ํ๋
JavaScript ํํ์์ด๋ค. -(MDN)
์ด๋ก์ ๋ฐฐ์ด์ด๋ ๊ฐ์ฒด๋ฅผ ๋ณ์์ ๋ด์๋ผ ๋ ์ฝ๊ฒ ๋ณ์์ ์ ์ธํ ์ ์๋ค.
2. ์ด๋ค ์์ผ๋ก ์ฌ์ฉํ๋ โ
๊ฐ์ฒด ๊ตฌ์กฐ ๋ถํด์ ๋ํด์ ์์ ๋ณด๊ฒ ๋ค.
์๋ฅผ ๋ค์ด, ์๋์ ๊ฐ์ ๊ฐ์ฒด๊ฐ ์๋ค๊ณ ๊ฐ์ ํ๋ค.
const user = {
name: "yong",
age: "23",
job: "๋ํ์"
}
๊ทธ๋ฆฌ๊ณ , ์ด ๊ฐ์ฒด๋ฅผ ํธ์ถํ๊ธฐ ์ํ ํจ์๋ฅผ ์ ์ํ๋ค.
function getUserInfo(user) {
retrun `์ด๋ฆ์ ${user.name}์ด๊ณ ๋์ด๋ ${user.age}, ์ง์
์ ${user.job}์
๋๋ค.`;
}
console.log(getUserInfo)
//์ด๋ฆ์ yong์ด๊ณ ๋์ด๋ 23, ์ง์
์ ๋ํ์์
๋๋ค.
์์ ํจ์๋ฅผ ๋ณด๋ฉด user.name, user.age ... ์ด๋ ๊ฒ user๊ฐ ์ธ๋ฒ์ด ๋ฐ๋ณต๋๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
์ฌ๊ธฐ์ ๊ตฌ์กฐ ๋ถํด ํ ๋น(Destructuring)์ ์ฌ์ฉํ๊ฒ ๋๋ฉด ๋จ์ํ ๋ณด๊ธฐ์ ์ข๊ธฐ๋ง ์ข๊ฒ ํ๋ ๊ฒ์ด ์๋๋ผ,
์ฝ๋ฉ์ ํ๋ ๋ถ๋ถ์์ ๋์ฑ ํธ๋ฆฌํ๋ค.
์ด์ ์์ ๊ฐ์ฒด๋ฅผ ์ด์ฉํ ํจ์์์ ๊ตฌ์กฐ ๋ถํด ํ ๋น(Destructuring)์ ์ด์ฉํ๊ฒ ๋๋ฉด
function getUserInfo(user) {
const { name, age, job } = user;
retrun `์ด๋ฆ์ ${name}์ด๊ณ ๋์ด๋ ${age}, ์ง์
์ ${job}์
๋๋ค.`;
}
console.log(getUserInfo)
//์ด๋ฆ์ yong์ด๊ณ ๋์ด๋ 23, ์ง์
์ ๋ํ์์
๋๋ค.
์ด๋ฐ ์์ผ๋ก ๊ฐ์ฒด์ Property๋ฅผ ์ด์ฉํด์ ๋ณ์์ฒ๋ผ ์ ๊ทผํด์ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.
์์ฒ๋ผ Property user.name ๊ณผ user.age, user.job์ ์ ์ฅ๋ ๊ฐ์ด ์์ํ๋ ๋ณ์์ ํ ๋น๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
๐ ๋ง์น๋ฉฐ
๊ฐ๋จํ๊ฒ ์๋ฐ์คํฌ๋ฆฝํธ์ ES6 ๋ฌธ๋ฒ์ธ ๊ตฌ์กฐ ๋ถํ ํ ๋น(Destructuring), ๊ฐ์ฒด ๊ตฌ์กฐ ๋ถํด์ ๋ํด์ ๊ฐ๋จํ๊ฒ ์ ๋ฆฌ๋ฅผ ํด๋ดค๋ค.
์์ผ๋ก ๊ฐ์ฒด๋ ๋ฐฐ์ด์ ์ด์ฉํด์ ๋ณ์๋ฅผ ์ ์ธํ ๋ ์ ์ฉํ๊ฒ ์ธ ์ ์๋ค.
์ ๋ง ๊ฐ๋จํ๊ฒ ์ ๋ฆฌํ๋๋ฐ ๊ตฌ์กฐ ๋ถํ ํ ๋น(Destructuring)์ ๋ํด์ ๋ ์์ธํ๊ณ ๊น๊ฒ ์๊ณ ์ถ๋ค๋ฉด,
์๋์ ๋ฌธ์๋ค์ ์ฐธ๊ณ ํด๋ณด๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค.
ko.javascript.info/destructuring-assignment
developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment