๋ณธ๊ฒฉ์ ์ธ node.js ์ฃผ์ฐจ๊ฐ ์์๋๋ค. ์๋ฐ์คํฌ๋ฆฝํธ ๊ฝค ์ต์ํด์ง ์ค ์์๋๋ฐ ์์ง ์จ๋ณด์ง ๋ชปํ๋ ๊ตฌ์กฐ ๋ถํด ํ ๋น์ด ํท๊ฐ๋ ค ๊ธฐ๋กํด๋ด์ผ๊ฒ ๋ค.
๐งจ ๊ตฌ์กฐ ๋ถํด ํ ๋น
- ๋ฐฐ์ด์ด๋ ๊ฐ์ฒด์ ์์ฑ์ ํด์ฒดํ์ฌ ๊ทธ ์์ ๊ฐ์ ๊ฐ๋ณ ๋ณ์๋ก ๋ด์ ์ ์๊ฒ ํ๋ ํํ์
- ๊ตฌ์กฐํ๋ ๋ฐฐ์ด๊ณผ ๊ฐ์ ์ดํฐ๋ฌ๋ธ ๋๋ ๊ฐ์ฒด๋ฅผ ๊ตฌ์กฐํ๊ดด(destructuring) ํ์ฌ 1๊ฐ ์ด์์ ๋ณ์์ ๊ฐ๋ณ์ ์ผ๋ก ํ ๋นํ๋ ๊ฒ์ ๋งํ๋ค.
- ๋ฐฐ์ด์ ๊ฐ ์์๋ฅผ ๋ฐฐ์ด๋ก๋ถํฐ ์ถ์ถ, 1๊ฐ ์ด์์ ๋ณ์์ ํ ๋นํ๋ค.(๋ฐฐ์ด์ ๊ธธ์ด์ ๋ง์ถฐ์ ๋ณ์ ํ ๋น ํ์ง ์์๋ OK)
- ๋ฐฐ์ด ๊ตฌ์กฐ ๋ถํด ํ ๋น์ ๋์(ํ ๋น๋ฌธ์ ์ฐ๋ณ)์ ์ดํฐ๋ฌ๋ธ์ด์ด์ผ ํ๋ค.
๐โโ๏ธ ์ดํฐ๋ฌ๋ธ?
- Symbol.iterator๋ฅผ ํ๋กํผํฐ ํค๋ก ์ฌ์ฉํ ๋ฉ์๋๋ฅผ ์ง์ ๊ตฌํํ๊ฑฐ๋ ํ๋กํ ํ์ ์ฒด์ธ ํตํด ์์ ๋ฐ์ ๊ฐ์ฒด
- ex) ๋ฐฐ์ด(Array.prototype์ Symbol.iterator ๋ฉ์๋๋ฅผ ์์ ๋ฐ์)
โจ๏ธ ์์
๊ธฐ๋ณธ ๊ตฌ๋ฌธ
- a, b, restValue ๋ผ๋ ๋ณ์์ ๊ฐ๊ฐ ๊ฐ์ ๋ด์์ฃผ์๋ค.
let a, b, restValue;
[a, b] = [10, 20];
console.log(a); // 10
console.log(b); // 20
[a, b, ...restValue] = [10, 20, 30, 40, 50];
console.log(restValue); // Array [30, 40, 50]
๋ฐฐ์ด ๊ตฌ์กฐ ๋ถํด
- colorCode ์์ hexcode ๊ฐ๋ค์ ์ฝ๊ฒ ์ฐ๊ธฐ ์ํด ๋ณ์ red, green, purple์ ์ง์ ํด์ฃผ๊ธฐ
const colorCode = ['#c23616', '#44bd32', '#9c88ff'];
const [red, green, purple] = colorCode;
console.log(red); // #c23616
console.log(green); // #44bd32
console.log(purple); // #9c88ff
๊ฐ์ฒด ๊ตฌ์กฐ ๋ถํด ๋ฐฉ์
- ์ฌ์ฉ์์ ์์ด๋, ๋น๋ฐ๋ฒํธ ๊ฐ์ฒด ๊ตฌ์กฐ ๋ถํด ํด๋ณด๊ธฐ
const user = { userName: 'soo', password: 's!@002!'};
const {userName, password} = user;
console.log(userName, password); // soo s!@002!
๋ณธ๊ฒฉ์ ์ธ node.js ์ฃผ์ฐจ๊ฐ ์์๋๋ค. ์๋ฐ์คํฌ๋ฆฝํธ ๊ฝค ์ต์ํด์ง ์ค ์์๋๋ฐ ์์ง ์จ๋ณด์ง ๋ชปํ๋ ๊ตฌ์กฐ ๋ถํด ํ ๋น์ด ํท๊ฐ๋ ค ๊ธฐ๋กํด๋ด์ผ๊ฒ ๋ค.
๐งจ ๊ตฌ์กฐ ๋ถํด ํ ๋น
- ๋ฐฐ์ด์ด๋ ๊ฐ์ฒด์ ์์ฑ์ ํด์ฒดํ์ฌ ๊ทธ ์์ ๊ฐ์ ๊ฐ๋ณ ๋ณ์๋ก ๋ด์ ์ ์๊ฒ ํ๋ ํํ์
- ๊ตฌ์กฐํ๋ ๋ฐฐ์ด๊ณผ ๊ฐ์ ์ดํฐ๋ฌ๋ธ ๋๋ ๊ฐ์ฒด๋ฅผ ๊ตฌ์กฐํ๊ดด(destructuring) ํ์ฌ 1๊ฐ ์ด์์ ๋ณ์์ ๊ฐ๋ณ์ ์ผ๋ก ํ ๋นํ๋ ๊ฒ์ ๋งํ๋ค.
- ๋ฐฐ์ด์ ๊ฐ ์์๋ฅผ ๋ฐฐ์ด๋ก๋ถํฐ ์ถ์ถ, 1๊ฐ ์ด์์ ๋ณ์์ ํ ๋นํ๋ค.(๋ฐฐ์ด์ ๊ธธ์ด์ ๋ง์ถฐ์ ๋ณ์ ํ ๋น ํ์ง ์์๋ OK)
- ๋ฐฐ์ด ๊ตฌ์กฐ ๋ถํด ํ ๋น์ ๋์(ํ ๋น๋ฌธ์ ์ฐ๋ณ)์ ์ดํฐ๋ฌ๋ธ์ด์ด์ผ ํ๋ค.
๐โโ๏ธ ์ดํฐ๋ฌ๋ธ?
- Symbol.iterator๋ฅผ ํ๋กํผํฐ ํค๋ก ์ฌ์ฉํ ๋ฉ์๋๋ฅผ ์ง์ ๊ตฌํํ๊ฑฐ๋ ํ๋กํ ํ์ ์ฒด์ธ ํตํด ์์ ๋ฐ์ ๊ฐ์ฒด
- ex) ๋ฐฐ์ด(Array.prototype์ Symbol.iterator ๋ฉ์๋๋ฅผ ์์ ๋ฐ์)
โจ๏ธ ์์
๊ธฐ๋ณธ ๊ตฌ๋ฌธ
- a, b, restValue ๋ผ๋ ๋ณ์์ ๊ฐ๊ฐ ๊ฐ์ ๋ด์์ฃผ์๋ค.
let a, b, restValue;
[a, b] = [10, 20];
console.log(a); // 10
console.log(b); // 20
[a, b, ...restValue] = [10, 20, 30, 40, 50];
console.log(restValue); // Array [30, 40, 50]
๋ฐฐ์ด ๊ตฌ์กฐ ๋ถํด
- colorCode ์์ hexcode ๊ฐ๋ค์ ์ฝ๊ฒ ์ฐ๊ธฐ ์ํด ๋ณ์ red, green, purple์ ์ง์ ํด์ฃผ๊ธฐ
const colorCode = ['#c23616', '#44bd32', '#9c88ff'];
const [red, green, purple] = colorCode;
console.log(red); // #c23616
console.log(green); // #44bd32
console.log(purple); // #9c88ff
๊ฐ์ฒด ๊ตฌ์กฐ ๋ถํด ๋ฐฉ์
- ์ฌ์ฉ์์ ์์ด๋, ๋น๋ฐ๋ฒํธ ๊ฐ์ฒด ๊ตฌ์กฐ ๋ถํด ํด๋ณด๊ธฐ
const user = { userName: 'soo', password: 's!@002!'};
const {userName, password} = user;
console.log(userName, password); // soo s!@002!