๐ ๊ฐ์๊ธฐ ์ด๋ฐ๊ฑธ ์ ๋ฆฌํ๋ ์ด์
์ต๊ทผ Udemy์์ React.js ๊ฐ์๋ฅผ ๋ฃ๊ณ ์๋ค๊ณ ๋ธ๋ก๊ทธ์ ํ ๋ ๋ฒ ๊ฑฐ๋ก ํ๋ ๊ธฐ์ต์ด ์๋ค. ๊ทธ ๊ฐ์๋ฅผ ๋ค์ผ๋ฉด์ ์ ์คํ ๋๊ปด์ง๋ ๊ฒ์ด ๊ธฐ๋ณธ๊ธฐ์๊ณ , ๊ธฐ๋ณธ๊ธฐ๋ฅผ ๋ค์ง๋ ค ์ด๋ฐ์ ๋ฐ ๋ฐฉ๋ฉด์ผ๋ก ๋ ธ๋ ฅ์ ํ๊ณ ์๋ค. ๊ทธ ์ค ๋ฆฌ์กํธ๋ก ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ฑํ๋ ๋ฐ์ ์์ด์ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ด๊ณ ๊ฐ์ฅ ์ค์ํ ๊ฒ์ด '์ฐจ์ธ๋ JavaScript ๋ฌธ๋ฒ (ES6)'์ด๋ผ๋ ์๊ฐ์ด ๋ค์๋ค.
๊ทธ๋์ ๋์์ ๊ฐ์๋ฅผ ๋น๋กฏํด์ ๊ตฌ๊ธ์ ๋์๋ค๋๊ธฐ๋ ํ๊ณ , ์ฑ ๋ ์ฝ์ด๊ฐ๋ฉฐ ๋๋ฆ๋๋ก ์ ๋ฆฌํด ๋ณธ ๋ด์ฉ์ ๋ธ๋ก๊ทธ์๋ ํฌ์คํ ์ ํด๋์์ผ๊ฒ ๋ค๋ ์๊ฐ์ด ๋ค์ด์ ์ด๋ ๊ฒ ๊ฐ์์ค๋ฝ๊ฒ ES6์ ํต์ฌ์ ์ธ ๋ฌธ๋ฒ๋ค์ ์ฌ๋ฆฌ๊ฒ ๋์๋ค. ๋ถ์กฑํ ๋ด์ฉ๋ ์๊ณ , ์์ง์ ์ด๋ป๊ฒ ํด์ผ ์ ํ์ฉํ ์ ์๋์ง ์์ ๋ชจ๋ฅด๊ฒ ์ง๋ง, ํน์๋ผ๋ ๋ถ์กฑํ ๋ถ๋ถ์ด, ๋ ๋ง๋ถ์ฌ์ผ ํ ๋ถ๋ถ์ด ์๋ค๋ฉด ๋ถ๋ด๊ฐ์ง ๋ง๊ณ ๋๊ธ๋ก ์กฐ์ธ์ ํด๋ฌ๋ผ๊ณ ๋ถํ๋๋ฆฌ๊ณ ์ถ๋ค.
let๊ณผ const, ์๋กญ๊ฒ ๋ณ์์ ์์๋ฅผ ์ ์ธํ๊ณ ์ ์ํ๊ธฐ
var
๊ธฐ์กด JavaScript์์๋ ๋ณ์๋ฅผ ์ ์ธํ ๋ ์๋์ ๊ฐ์ด var ํค์๋๋ฅผ ํตํด์ ์ ์ธํ์๋ค.
ํ์ง๋ง var์ ๊ฒฝ์ฐ ๋ณ์์ ์ค๋ณต ํ ๋น ๋ฌธ์ ์์ ์์ ๋กญ์ง ๋ชปํ๋ค.
์์ ๊ฐ์ ๊ฒฝ์ฐ console์ ์ฐํ๋ ๊ฐ์ ๋งจ ์ฒ์ ํ ๋นํ ๊ฐ์ธ 1์ด ์๋ ๋ฐ๋ณต๋ฌธ์์ ์๋ฏธ์์ด 10๋ฒ์ด๋ ํ ๋นํ 2๋ค.
let
ES6 ๋ฌธ๋ฒ์ธ let ํค์๋ ๋ณ์ ์ ์ธ์ ์ด๋ฐ ์ค๋ณต ํ ๋น ๋ฌธ์ ์์ ์์ ๋กญ๋ค.
์์ ๊ฐ์ ๊ฒฝ์ฐ์๋ ์ฝ๋๊ฐ ์คํ์กฐ์ฐจ ๋์ง ์๊ฑฐ๋ JSBin์์๋ ์ฒ์ ํ ๋น๋ ๊ฐ์ธ 1์ด console์ ์ถ๋ ฅ๋๋ค.
Const
const ํค์๋๋ Kotlin๊ณผ Python ๊ฐ์ด ๋น๊ต์ ํ์ ์ถ๋ก ์ด ๊ฐ๋ ฅํ ์ธ์ด๋ค์์ ์ฐ์ด๋ val ํค์๋์ ์ ์ฌํ๊ฒ '์์'์ ๊ฐ๋ ์ด๋ค.
const ํค์๋๋ฅผ ํตํด ์ ์ธ๋ ์์๋ ํ ๋น๋ ๊ฐ์ ์ถํ์ ๋ณ๊ฒฝํ ์ ์๋ค.
ES6์์๋ ํ์ ํ ํ์ดํ ํจ์์ฒ๋ผ ํจ์ ๋ํ const ํค์๋๋ฅผ ํตํด ์์๋ก ์ ์ธํ ์ ์๊ธฐ ๋๋ฌธ์ ์ค์ํ๋ค๊ณ ๋ณผ ์ ์๋ค.
ํ์ดํ ํจ์ (Arrow Function)
ํ์ดํ ํจ์์ ์ฉ๋ฒ์ ๋ณ๋๋ก ํฌ์คํ ์ ๋จผ์ ํด๋์๊ธฐ ๋๋ฌธ์ ๋งํฌ๋ก ๋์ฒดํ๊ฒ ๋ค. ๋จธ์ฑ... ^^;;;
๋์ ์ ํ์ดํ ํจ์๊ฐ ๊ฐ๋ ํน์ง์ ์ด๊ณณ์ ๋ฐ๋ก ์ ๋ฆฌํด๋ณด๋๋ก ํ๊ฒ ๋ค.
ํ์ดํ ํจ์๋ ์ต๋ช ํจ์ (Anonymous function) ๋ค.
์ต๋ช ํจ์๋ ํจ์๋ช ๋์ ๋ณ์(์์)๋ช ์ ํจ์ ์ฝ๋๋ฅผ ์ ์ฅํ๋ ๊ตฌํ ๋ฐฉ์์ด๋ค.
์ต๋ช ํจ์์ ์์ค ์ฝ๋๋ ๋ณ์(์์)๊ฐ์ด๊ธฐ ๋๋ฌธ์ ๋์ ์ธ๋ฏธ์ฝ๋ก ์ ๋์ ํ์ฌ์ผ ํ๋ค.
์ต๋ช ํจ์ ํธ์ถ ์์๋ ๋ณ์๋ช ์ ํจ์๋ช ์ฒ๋ผ ์ฌ์ฉํ ์ ์๋ค.
ํ์ดํ ํจ์๋ const, let ํค์๋๋ฅผ ์ฌ์ฉํด์ ๋ณ์๋ช ์ ํจ์ ์ฝ๋๋ฅผ ์ ์ฅํ๋ฏ๋ก ์ต๋ช ํจ์๋ค.
ํ์ดํ ํจ์๊ฐ ์ ํ๋๋ ๊ฒฝ์ฐ
- ๋ฉ์๋๋ก ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ
- ์์ฑ์๋ก ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ ๋ฑ
Array / Object Destructuring (๋ฐฐ์ด / ๊ฐ์ฒด์ ๊ตฌ์กฐ ๋ถํด ํ ๋น)
๋ฐฐ์ด ๋์คํธ๋ญ์ฒ๋ง
๋์คํธ๋ญ์ฒ๋ง์ ๊ตฌ์กฐ ๋ถํด ํ ๋น ํน์ ๋น๊ตฌ์กฐํ ํ ๋น์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
๊ธฐ์กด์ ์ ์ธ ๋ฐ ํ ๋น๋์ด ์๋ ๋ฐฐ์ด ๋ฐ ๊ฐ์ฒด์ ์์(ํ๋กํผํฐ)๋ฅผ ๋ค๋ฅธ ๋ฐฐ์ด ํน์ ๋ณ์, ๊ฐ์ฒด๋ก ์ฎ๊ธธ๋ ์ ์ฉํ๊ฒ ์ฌ์ฉํ ์ ์๋ค.
๋์คํธ๋ญ์ฒ๋ง์ ๊ธฐ๋ณธ ์ฉ๋ฒ์ ์๋์ ๊ฐ๋ค.
๋ฐฐ์ด์ ๊ตฌ์กฐ ๋ถํด ํ ๋นํ๋ ์์ ์ด๋ค. ๊ธฐ์กด์ ์ ์ธ ๋ฐ ํ ๋น๋์ด ์๋ arry ๋ฐฐ์ด์ ์์ 1, 2, 3 ์ค ์ฒซ๋ฒ์งธ์ ์ธ ๋ฒ์งธ ์์๋ฅผ ์์ one, three์ ๋ด๊ณ 2๋ ์๋ฌด๋ฐ๋ ํ ๋นํ์ง ์๋๋ค. ๋์คํธ๋ญ์ฒ๋ง ์์๋ ๊ธฐ์กด ๋ฐฐ์ด์ ์ธ๋ฑ์ค๋ฅผ ๋์ผํ๊ฒ ์ค์ ํ์ฌ ํ ๋นํด์ฃผ์ด์ผ ํ๋ฉฐ, ํ ๋น๋ฐ์ง ์์ ๋ถ๋ถ์ ์ฝค๋ง(,)๋ก ๋น์์ฃผ๋ฉด ๋๋ค.
๊ทธ๋ ๋ค๋ฉด ๊ธฐ์กด์ ๋ฐฐ์ด์ ์์๋ 2๊ฐ์ด๊ณ , ๋ฐฐ์ด์ ๋ณต์ฌํ๋ฉฐ ํ ๋นํ๊ณ ์ถ์ ๋ณ์๋ 3๊ฐ๋ผ๊ณ ๊ฐ์ ํ์ ๋, ์ด๋ป๊ฒ ๊ตฌ์กฐ ๋ถํด ํ ๋น์ ํ ์ ์์๊น? ๊ทธ ๋ฐฉ๋ฒ์ ์๋์ ๊ฐ๋ค.
๋ฐฐ์ด ๋์คํธ๋ญ์ฒ๋ง์ React.js์ Hook ์ค ํ๋์ธ useState๋ฅผ ์ฌ์ฉํ ๋ ์ฝ๊ฒ ๋ณผ ์ ์๋ ๋ฌธ๋ฒ์ด๋ค.
๊ฐ์ฒด ๋์คํธ๋ญ์ฒ๋ง
๊ตฌ์กฐ ๋ถํด ํ ๋น์ ๋ฐฐ์ด ๋ฟ๋ง ์๋๋ผ ๊ฐ์ฒด์๋ ์ ์ฉํ ์ ์๋ค. ๊ฐ์ฒด์ ํน์ ํ๋กํผํฐ๋ง์ ๋นผ์ฌ ๋ ์ ์ฉํ๊ฒ ์ฌ์ฉํ ์ ์๋ค.
human ๊ฐ์ฒด๋ name ํ๋กํผํฐ์ ๊ฐ์ด 'Taeun', age ํ๋กํผํฐ์ ๊ฐ์ด 22๋ก ๊ตฌ์ฑ๋์ด ์๋ค. ๋ฐฐ์ด ๊ตฌ์กฐ ๋ถํด ํ ๋น๊ณผ ๋์ผํ๊ฒ ๊ฐ์ฒด ๊ตฌ์กฐ ๋ถํด ํ ๋น ๋ํ ํ๋กํผํฐ์ ์์์ ๋ง๊ฒ ๊ตฌ์กฐ ๋ถํด ํ ๋น์ ํด์ฃผ๋ฉด ๋๋ค.
Spread & Rest
์คํ๋ ๋์ ๋ ์คํธ๋ '์ฐ์ฐ์'์ด๋ฉฐ ์ ์ธ ๊ฐ๋ก ํํ๋๋ค. ...
๋์ผํ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ง๋ง ์คํ๋ ๋์ ๋ ์คํธ๋
Spread
์คํ๋ ๋๋ ๋ฐฐ์ด์ ์์๋ ๊ฐ์ฒด์ ํ๋กํผํฐ๋ฅผ ๋๋๋ ๋ฐ์ ์ฌ์ฉํ๋ค. ์ข ๋ ๊ฐ๋จํ ๋งํ์๋ฉด 'spread'์ ๋ป๊ณผ ๊ฐ์ด ๋ฐฐ์ด์ด๋ ๊ฐ์ฒด๋ฅผ ํผ์ณ๋๋ ์ด๋ฏธ์ง๋ก ์๊ฐํ๋ฉด ์ฝ๋ค.
์์ ๋ ์ค๋นํ์ง ๋ชปํ์ง๋ง ๋ฐฐ์ด ๊ตฌ์กฐ ๋ถํด ํ ๋น๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ๊ฐ์ฒด์ ํ๋กํผํฐ๋ ์์ ๊ฐ์ด ๋ณต์ฌํด ์ฌ ์ ์๋ค.
Rest
๋ ์คํธ ์ฐ์ฐ์๋ ํจ์์ ์ธ์ ๋ชฉ๋ก์ ๋ฐฐ์ด๋ก ํฉ์น๋ ๋ฐ์ ์ฌ์ฉํ๋ค.
sortArgs() ํจ์๋ ๋งค๊ฐ๋ณ์๋ฅผ ๋ฌดํํ ๋ฐ์ ์ ์๋ค. 1๊ฐ ์ด์์ ๋งค๊ฐ๋ณ์๊ฐ ๋ค์ด์จ๋ค๋ฉด ๋ชจ๋ ๋ฐฐ์ด๋ก ํตํฉ๋์ด ํจ์ ๋ด์์ ๋ฐฐ์ด ๋งค๊ฐ๋ณ์์ ๋ํ ๋ฐฐ์ด ๋ฉ์๋๋ฅผ ์ ์ฉํ ์ ์๋ค.
์ฌ๊ธฐ๊น์ง๊ฐ ๋ด๊ฐ ๊ณต๋ถํ React.js๋ฅผ ์์ํ๊ธฐ ์ ์ ์์๋๋ฉด ์ข์๋งํ ES6 ๋ฌธ๋ฒ ์ ๋ฆฌ๋ค. ์ด๋ฆฌ์ ๋ฆฌ ๋ง์ ์๋ฃ๋ฅผ ๋ณด๊ณ ๋ด ๊ฒ์ผ๋ก ๋ง๋ ๋ค๊ณ ํ์ผ๋ ์์ง๋ ์ค๋ช ํ๋ผ๋ฉด ๋ถ์กฑํ ๋ถ๋ถ์ด ๋ ๋ง์ ๊ฒ ๊ฐ๋ค๋ ์๊ฐ์ด ๋ ๋ค. ๊ธฐ๋ณธ๊ธฐ๋ฅผ ๋ค์ง๊ธฐ ์ํด ์์ํ ๊ณต๋ถ์ด๋๋งํผ ํ์คํ ๋ด๊ฒ์ผ๋ก ๋ง๋ค๋ฉด ์ข์ํ ๋ฐ. ํน์๋ ๋ถ์กฑํ ์ค๋ช ์ด ์๋ค๋ฉด ๋ถ๋ ๋๊ธ๋ก ์๋ ค์ฃผ์๊ธฐ๋ฅผ ๋ถํ๋๋ฆฐ๋ค. ๋ ์ค์ค๋ก๋ ๋ ๊ณต๋ถ๊ฐ ๋์๋ค๊ณ ์๊ฐํ ๋ ๋ค์ ํ ๋ฒ ๊บผ๋ด ๋ณด๊ณ ๋ถ์กฑํ ๋ถ๋ถ์ ๋ฉ๊ฟ ์ ์๋๋ก ํด์ผ๊ฒ ๋ค.
'Web Programming > JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JavaScript] ํ์ดํ ํจ์(Arrow Function) ๊ธฐ๋ณธ ์ฉ๋ฒ ์ ๋ฆฌ (0) | 2022.11.10 |
---|