Destructuing Assignment
About
JavaScript์๋ ๊ตฌ์กฐ ๋ถํด ํ ๋น(Destructuing Assignment)์ด๋ผ๋ ํธ๋ฆฌํ ๋ฌธ๋ฒ์ด ์๋ค. ๊ต์ฅํ ๋ง์ด ์ฐ์ด๋ ๋ฌธ๋ฒ์ธ๋ฐ ํ ๋ฒ ์์๋ณด์.
๋ด์ฉ์ ์ ๋ถ MDN ๋ฌธ์์์ ๊ฐ์ ธ์จ ๊ฒ์ด์ง๋ง ์ค์ ๊ฐ๋ฐํ๋ฉด์ ๊ฒช์ ์์๋ ์ค๊ฐ ์ค๊ฐ ๋ฃ์ด๋ณด์๋ค.
๋ฌธ๋ฒ (Syntax)
๊ฐ์
=
๋ฅผ ๊ธฐ์ค์ผ๋ก ์ผ์ชฝ์ ํ ๋น๋ฐ์ ๋ณ์๋ฅผ, ์ค๋ฅธ์ชฝ์ ๋ถํดํ ๋์์ ์ ์ด์ ์์๋๋ก ๋์
ํ ์ ์๋ค.
a
์๋ 10
, b์๋ 20
์ด ๋ด๊ธฐ๊ฒ ๋๋ค.
๋ฐฐ์ด ๋ฐ ๊ฐ์ฒด
const
๋ก ํ ๊ฒฝ์ฐ ๋ด๋ถ ๋ณ์๋ read-only์ด์ง๋ง,let
์ผ๋ก ํ ๊ฒฝ์ฐ ๋ด๋ถ ๋ณ์๋ ์ฌํ ๋น์ด ๊ฐ๋ฅํ๋ค.
์๋๋ ๊ฒฝ์ฐ๋ ์๋ค.
๋ํดํธ ๊ฐ
๊ฐ ๊ตฌ์กฐ ๋ถํด๋ ํ๋กํผํฐ๋ ๋ํดํธ ๊ฐ์ ๊ฐ์ง ์ ์๋ค.
ํ๋กํผํฐ๊ฐ ์กด์ฌํ์ง ์๊ฑฐ๋
undefined
์ด๋ฉด ๋ํดํธ ๊ฐ์ด ์ฌ์ฉ๋๋ค.ํ๋กํผํฐ๊ฐ
null
๊ฐ์ ๊ฐ์ง๋ฉด ๋ํดํธ ๊ฐ์ด ์ ์ฉ๋์ง ์๋๋ค.
๋ํดํธ ๊ฐ์ ํํ์(expression)์ด ๋ ์๋ ์๋ค. ํ์ํ ๋๋ง evaluated ๋๋ค.
Rest Property
๊ตฌ์กฐ ๋ถํด ํจํด์ ...rest
์ ๊ฐ์ด rest property๋ก ๋๋ผ ์๋ ์๋ค. ์ด ํจํด์ผ๋ก ๊ฐ์ฒด๋ ๋ฐฐ์ด์ ๋จ์ ํ๋กํผํฐ๋ฅผ ์๋ก์ด ๊ฐ์ฒด๋ ๋ฐฐ์ด์ ํ ๋นํ ์ ์๋ค.
Rest property๋ ๋ง์ง๋ง์ ์์ด์ผ ํ๋ฉฐ, trailing comma (
,
)๋ฅผ ๊ฐ์ง๋ฉด ์๋๋ค.
๋ค๋ฅธ ๋ฌธ๋ฒ์์์ ๊ตฌ์กฐ ๋ถํด ํจํด
๋ณ์๋ฅผ ๋ฐ์ธ๋ฉํ๋ ๋ค๋ฅธ ๋ง์ ๋ฌธ๋ฒ์์ ๊ตฌ์กฐ ๋ถํด ํจํด์ ์ฌ์ฉํ ์ ์๋ค. ์๋ฅผ ๋ค์๋ฉด:
for...in
,for...of
๋ฃจํ์ ๋ฃจํ ๋ณ์ํจ์์ ๋งค๊ฐ๋ณ์
catch
๋ฐ์ธ๋ฉ ๋ณ์
์์ (Examples)
๋ฐฐ์ด ๊ตฌ์กฐ ๋ถํด
๊ธฐ๋ณธ์ ์ธ ๋ฐฐ์ด ํ ๋น
์์ค๋ณด๋ค ๋ง์ ์์ ๊ตฌ์กฐ ๋ถํด
๋ณ์ ์ค์ํ๊ธฐ (Swapping variables)
ํจ์๋ก๋ถํฐ ๋ฐํ๋ ๋ฐฐ์ด ํ์ฑํ๊ธฐ
ํจ์๋ก๋ถํฐ ๋ฐํ๋ ๋ฐฐ์ด ๊ฐ์ ์ข๋ ๊ฐ๊ฒฐํ๊ฒ ์ ๊ทผํ ์ ์๋ค.
๋ฐํ ๊ฐ ์ผ๋ถ ๋ฌด์ํ๊ธฐ
๋ฐ์ธ๋ฉ ํจํด์ Rest Property๋ก ์ฌ์ฉํ๊ธฐ
๋ฐฐ์ด์ ๊ตฌ์กฐ ๋ถํด ํ ๋น์์์ rest property๋ ๋ ๋ค๋ฅธ ๋ฐฐ์ด์ด๋ ๊ฐ์ฒด์ ๋ฐ์ธ๋ฉ ํจํด์ด ๋ ์ ์๋ค. ์ด ๋ฐฉ๋ฒ์ผ๋ก ๋์์ ํ๋กํผํฐ๋ ๋ฐฐ์ด์ ์ธ๋ฑ์ค๋ฅผ ๋ถ๋ฆฌ(unpack)ํ ์ ์๋ค.
์ด๋ฐ ๋ฐ์ธ๋ฉ ํจํด์ ๊ฐ rest property๊ฐ ๋ง์ง๋ง์ ์์นํ ํ ์ค์ฒฉ์ด ๊ฐ๋ฅํ๋ค.
Warning: ํ์ง๋ง ๊ฐ์ฒด์ ๊ตฌ์กฐ ๋ถํด๋ identifier๋ง์ด rest property๋ก ์ฌ์ฉ ๊ฐ๋ฅํ๋ค.
์ ๊ท ํํ์์ผ๋ก ๋ถ๋ฆฌ(unpacking)ํ๊ธฐ
์ ๊ทํํ์์ exec()
๋ฉ์๋๊ฐ ๋งค์น๋ฅผ ์ฐพ์ผ๋ฉด ์ฒซ ๋ฒ์งธ ์์๋ก ๋ฌธ์์ด์์ ๋งค์น๋ ๋ถ๋ถ ์ ์ฒด (full match)๋ฅผ, ๊ทธ๋ฆฌ๊ณ ๋๋จธ์ง ์์๋ก ()
๋ก ๊ทธ๋ฃนํ๋ ๊ฒ์ ๋งค์น๋๋ ๋ฌธ์์ด์ ๋ถ๋ถ๋ค์ ๊ฐ๋ ๋ฐฐ์ด์ ๋ฐํํ๋ค.
๊ตฌ์กฐ ๋ถํด ํ ๋น์ผ๋ก full match๋ฅผ ๋ฌด์ํ๊ณ ๋๋จธ์ง ๋ถ๋ถ์ ๋ถ๋ฆฌํ ์ ์๋ค.
์ด๋ค iterable์ด๋ ๋ฐฐ์ด ๊ตฌ์กฐ ๋ถํด ์ฌ์ฉํ๊ธฐ
๋ฐฐ์ด ๊ตฌ์กฐ ๋ถํด๋ right-hand side์์ iterable ํ๋กํ ์ฝ์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ด๋ค iterable์ด๋ ๊ตฌ์กฐ ๋ถํด๊ฐ ๊ฐ๋ฅํ๋ค.
๊ฐ์ฒด ๊ตฌ์กฐ ๋ถํด
๊ธฐ๋ณธ ํ ๋น
์๋ก์ด ๋ณ์ ์ด๋ฆ์ ํ ๋นํ๊ธฐ
p
๋ฅผfoo
๋ก,q
๋ฅผbar
๋ก ๋ฐ๋๋ค.
์๋ก์ด ๋ณ์ ์ด๋ฆ์ ํ ๋นํ๊ณ ๋ํดํธ ๊ฐ ์ค์ ํ๊ธฐ
ํ๋กํผํฐ์ ๋ํด์ ๋ค์ ๋ ๊ฐ์ง ์์ ์ (๋์์) ํ ์ ์๋ค.
๊ฐ์ฒด๋ก๋ถํฐ ๋ถ๋ฆฌ(unpack)ํด ์๋ก์ด ์ด๋ฆ์ ๋ณ์๋ก ํ ๋นํ๊ธฐ
๋ถ๋ฆฌ๋(unpacked) ๊ฐ์ด
undefined
์ผ ๊ฒฝ์ฐ์ ๋๋นํด ๋ํดํธ ๊ฐ ์ค์ ํ๊ธฐ
ํจ์ ๋งค๊ฐ๋ณ์๋ก ์ ๋ฌ๋ ๊ฐ์ฒด๋ก๋ถํฐ ํ๋กํผํฐ ๋ถ๋ฆฌํ๊ธฐ(Unpacking)
ํจ์ ๋งค๊ฐ๋ณ์์ ๋ํดํธ ๊ฐ ์ค์ ํ๊ธฐ
์ค์ฒฉ๋ ๊ฐ์ฒด์ ๋ฐฐ์ด ๊ตฌ์กฐ ๋ถํด
for...of
๋ฐ๋ณต๊ณผ ๊ตฌ์กฐ ๋ถํด
for...of
๋ฐ๋ณต๊ณผ ๊ตฌ์กฐ ๋ถํด๊ณ์ฐ๋(Computed) ๊ฐ์ฒด ํ๋กํผํฐ ์ด๋ฆ๊ณผ ๊ตฌ์กฐ ๋ถํด
์ฌ๋ฐ๋ฅด์ง ์์ JavaScript ์๋ณ์๋ช
์ ํ๋กํผํฐ ์ด๋ฆ์ผ๋ก ์ฌ์ฉํ๊ธฐ
๋ฐฐ์ด๊ณผ ๊ฐ์ฒด๊ฐ ํฉ์ณ์ง ํํ์ ๊ตฌ์กฐ ๋ถํด
๋ฐฐ์ด๊ณผ ๊ฐ์ฒด ๊ตฌ์กฐ ๋ถํด๋ฅผ ๋์์ ํ ์ ์๋ค.
๊ฐ์ฒด๊ฐ ๊ตฌ์กฐ ๋ถํด๋ ๋ ํ๋กํ ํ์
์ฒด์ธ(Prototype chain)๋ฅผ ๋ฐ๋ผ๊ฐ ์ฐพ์๊ฐ๋ค
๊ฐ์ฒด๋ฅผ ๊ตฌ์กฐ ๋ถํดํ ๋, ํ๋กํผํฐ๊ฐ ํด๋น ํ๋กํผํฐ ์์ ์๋ค๋ฉด(not accessed in itself) ํ๋กํ ํ์ ์ฒด์ธ์ ๋ฐ๋ผ์ ๊ณ์ํด์ ์ฐพ์๊ฐ ๊ฒ(look up)์ด๋ค.
๊ฒฐ๋ก (Conclusion)
์ ๋ฆฌํ๊ณ ๋ณด๋ ์ฐ์์๊ฐ ์์ผ ์ฐธ ๋ง๋ค. (์ ๋ฆฌํ๋ค๊ฐ ๋ช ๋ฒ ์กธ์๋ค. ๐ฅฑ)
๊ทผ๋ฐ ๋ณด๋ฉด ์๊ฒ ์ง๋ง Examples ์น์ ์ ์๋ ๋ด์ฉ์ด ๋ฐ ์ด์์ด๋ค. ์์๊ฐ ๋ค์ํด์ ๋ง์ ๋ณด์ด๋ ๊ฒ์ด์ง, ์ฌ์ฉ๋ฒ๊ณผ ์๋ฆฌ๋ง ์๋ฉด ์์ ๋กญ๊ฒ ์ฌ์ฉํ ์ ์๋ค.
์ ์ผ ์ค์ํ ๊ฑด ๊ฒฝํ์ ํตํด ๊ตฌ์กฐ ๋ถํด๋ฅผ ์ฌ์ฉํ๋ฉด ์ ํฉํ์ง๋ฅผ ์ฒด๋ํ๊ณ ์ ์ฌ์ ์์ ์ฌ์ฉํ๋ ๊ฒ์ด๋ค.
REF
Last updated
Was this helpful?