๊ตฌ์กฐ ๋ถํด ํ ๋น Destructuring Assignment
๊ฐ์ฒด๋ ๋ฐฐ์ด์ ์ ์ฅ๋ ๋ฐ์ดํฐ ์ ์ฒด๊ฐ ์๋ ์ผ๋ถ๋ง ํ์ํ ๊ฒฝ์ฐ์ ๊ฐ์ฒด๋ ๋ฐฐ์ด์ ๋ณ์๋ก '๋ถํด’ํ ์ ์๊ฒ ํด์ฃผ๋ ํน๋ณํ ๋ฌธ๋ฒ์ธ ๊ตฌ์กฐ ๋ถํด ํ ๋น์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๊ฐ์ฒด ๊ตฌ์กฐ๋ถํด ํ ๋น
// ์ผ๋ฐ์ ์ธ ๊ฐ์ฒด ์์ฑ ์ ๊ทผ
const user = {name: "์ง์ง", age: 10};
console.log(user.name); // ์ง์ง
console.log(user.age); // 10
// ๊ตฌ์กฐ๋ถํด ํ ๋น ์ฌ์ฉ โ
const { name, age } = user;
console.log(name); // ์ง์ง
console.log(age); // 10
๊ตฌ์กฐ ๋ถํด๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฐ์ดํฐ์ ์ ๊ทผํ๊ธฐ ํธํฉ๋๋ค.
๊ทธ๋ฌ๋ ํค ๊ฐ์ผ๋ก ๋ถ๋ฌ์จ ๊ฒ์ด๊ธฐ์ name ์ด ์๋ ๋ค๋ฅธ ํค๋ก ๊ฐ์ ธ์ค๋ ค๊ณ ํ๋ฉด ์๋์ ๊ฐ์ด undefined ๋ฅผ ๊ฐ์ ธ ์ต๋๋ค.
const user = {name: "์์๊ตฌ", age: 10};
const { name2, age } = user
console.log(name2) // undefined
console.log(age) // 10
๋ฐฐ์ด ๊ตฌ์กฐ๋ถํด ํ ๋น
// ์ผ๋ฐ์ ์ธ ๋ฐฐ์ด ์์ฑ ์ ๊ทผ
const games = ['๋ฐฐํ๊ทธ๋ผ์ด๋', '๋ฆฌ๊ทธ์ค๋ธ๋ ์ ๋'];
console.log(games[0]) // ๋ฐฐํ๊ทธ๋ผ์ด๋
console.log(games[1]) // ๋ฆฌ๊ทธ์ค๋ธ๋ ์ ๋
// ๊ตฌ์กฐ๋ถํด ํ ๋น โ
const [battleGround, Lol] = games;
console.log(battleGround); // ๋ฐฐํ๊ทธ๋ผ์ด๋
console.log(Lol); // ๋ฆฌ๊ทธ์ค๋ธ๋ ์ ๋
๋ฐฐ์ด์ ๊ฒฝ์ฐ index ๋ก ๊ฐ ์๋ฆฌ๊ฐ ์ ํด์ ธ ์๊ธฐ ๋๋ฌธ์ ๋ณ์๋ช ์ battleGround, lol ๊ฐ์ด ์์ ๋กญ๊ฒ ๋ฃ์ด ์ฃผ์ด๋ ์์๋๋ก ๊ฐ์ด ๋ค์ด ๊ฐ๋๋ค.
ํน์ ๋ชจ๋ ์์ฑ๋ง๋ค ๋ณ์๋ฅผ ์ง์ ํ์ง ์์๋ ๋ฉ๋๋ค.
์๋ ์์๋ฅผ ๋ณด๋ฉด 0๋ฒ์งธ ์ธ๋ฑ์ค์๋ง ๋ณ์๋ช ์ ์ฃผ๊ณ ๋๋จธ์ง๋ ...others ๋ก ์์๋๋ก ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค.
์ฌ๊ธฐ์ others ๋ ์์ ๋ฌธ์์ผ ๋ฟ์ด๋ฉฐ, ๋ค๋ฅธ ๋ฌธ์๋ฅผ ์ฌ์ฉํด๋ ๋ฉ๋๋ค. ex) ...rest
const games = ['๋ฐฐํ๊ทธ๋ผ์ด๋', '๋ฆฌ๊ทธ์ค๋ธ๋ ์ ๋', '๋ฐ๋์๋๋ผ'];
const [battleGround, ...others] = games;
console.log(battleGround); // ๋ฐฐํ๊ทธ๋ผ์ด๋
console.log(games); // [ '๋ฐฐํ๊ทธ๋ผ์ด๋', '๋ฆฌ๊ทธ์ค๋ธ๋ ์ ๋', '๋ฐ๋์๋๋ผ' ]
๋ฐฐ์ด์ ํฌ๊ธฐ๋ณด๋ค ๋ง์ ๋ณ์๋ฅผ ์์๋ก ์ ์ฅํ ์ ์์ต๋๋ค.
๊ทธ๋ฌ๋ games ์ ์ถ๋ ฅ์ ๋์ง ์์ต๋๋ค. ๋จ์ง const baram = '๋ฐ๋์ ์๊ตญ'; ๋ณ์๋ฅผ ์๋ก ๋ง๋ค์ด ์ค ๊ฒ์ด๋ ๋ค๋ฆ ์์ต๋๋ค.
const games = ['๋ฐฐํ๊ทธ๋ผ์ด๋', '๋ฆฌ๊ทธ์ค๋ธ๋ ์ ๋'];
const [battleGround, Lol, baram = '๋ฐ๋์ ์๊ตญ'] = games;
console.log(battleGround); // ๋ฐฐํ๊ทธ๋ผ์ด๋
console.log(games); // [ '๋ฐฐํ๊ทธ๋ผ์ด๋', '๋ฆฌ๊ทธ์ค๋ธ๋ ์ ๋' ]
console.log(baram); // ๋ฐ๋์ ์๊ตญ
์ด๊ฒ์ ์๋์ ๊ฐ์ด ํ์ฉํ ์ ์์ต๋๋ค.
const games = ['๋ฐฐํ๊ทธ๋ผ์ด๋', '๋ฆฌ๊ทธ์ค๋ธ๋ ์ ๋', '์๊ตญ์ ๋ฐ๋'];
const [battleGround, Lol, baram = '๋ฐ๋์ ์๊ตญ'] = games;
console.log(battleGround); // ๋ฐฐํ๊ทธ๋ผ์ด๋
console.log(games); // [ '๋ฐฐํ๊ทธ๋ผ์ด๋', '๋ฆฌ๊ทธ์ค๋ธ๋ ์ ๋', '์๊ตญ์ ๋ฐ๋' ]
console.log(baram); // ์๊ตญ์ ๋ฐ๋
games ์ 2๋ฒ์งธ ์๋ฆฌ(์๊ตญ์ ๋ฐ๋)์ ๊ฐ์ด ์๋ค๋ฉด, baram ๋ณ์์ ๊ทธ ๊ฐ์ ๋ฃ์ด์ค๋๋ค.
๋ง์ฝ, 2๋ฒ์งธ ์๋ฆฌ๊ฐ ๋น์ด ์๋ค๋ฉด, baram ๋ณ์์ ์ด๊ธฐ๊ฐ์ธ '๋ฐ๋์ ์๊ตญ' ์ด ๋ค์ด๊ฐ๋๋ค.
ํจ์ ์ธ์ ๊ตฌ์กฐ๋ถํด ํ ๋น
์ธ์ ์๋ฆฌ์ ๊ตฌ์กฐ๋ถํด ํ ๋น์ ์ฌ์ฉํ๋ฉด, ๋ ๊ฐ๋จํ๊ฒ ์ ๊ทผ ๊ฐ๋ฅํฉ๋๋ค.
๊ตฌ์กฐ๋ถํด ํ ๋น โ
const people_obj = {name: 'lee', age: 20};
const people_arr = ['lee', 20];
// ๊ฐ์ฒด์ผ ๋
const getUserName_obj = ({name, age}) => { // key ๋ก ์ ๊ทผํ๊ธฐ์ name, age ๋ก ๋ถ๋ฌ์ผ ํฉ๋๋ค.
return `${name}์ ๋์ด๋ ${age}`;
};
// ๋ฐฐ์ด์ผ ๋
const getUserName_arr = ([name, age]) => { // index ๋ก ์ ๊ทผํ๊ธฐ์ n, a ์ด๋ ๊ฒ ์์ ๋กญ๊ฒ ์ธ์ ์ฌ์ฉ ๊ฐ๋ฅ
return `${name}์ ๋์ด๋ ${age}`;
};
console.log(getUserName_obj(people_obj)); // lee์ ๋์ด๋ 20
console.log(getUserName_arr(people_arr)); // lee์ ๋์ด๋ 20
ํจ์์์๋ ์๋์ ๊ฐ์ด๋ ๋ง์ด ํ์ฉํฉ๋๋ค.
function makeNum() {
return ['one', 1];
}
const [num_string, num_number] = makeNum();
console.log(num_string); // one
console.log(num_number); // 1
์ฐธ๊ณ ์๋ฃ
https://ko.javascript.info/destructuring-assignment
๊ตฌ์กฐ ๋ถํด ํ ๋น
ko.javascript.info
'JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
JS ์ ์ฌ๋ฐฐ์ด๊ณผ ๋ฐฐ์ด์ ์ฐจ์ด์ (0) | 2022.08.24 |
---|---|
JS ์คํ ์ปจํ ์คํธ์ ์ฝ ์คํ (0) | 2022.08.11 |
JS ํธ์ด์คํ ๊ณผ TDZ (0) | 2022.08.11 |
JS ์ค์ฝํ์ ์ค์ฝํ ์ฒด์ธ (0) | 2022.08.11 |
JS Equality operators == === != !== (0) | 2022.08.11 |