2023. 8. 20. 23:27ใ0. TiL ( Today I Learned )
ES6 ๊ด๋ จ๋ JS๊ธฐ์ด๋ฌธ๋ฒ ํ์ต๋ด์ฉ
2023.07.29 - [2. JS๋ฌธ๋ฒ ์ข
ํฉ] - [ JavaScript ๋ฌธ๋ฒ ์ข
ํฉ๋ฐ 2์ฃผ์ฐจ (1)] ES6๋ฌธ๋ฒ, ๊ตฌ์กฐ๋ถํดํ ๋น
2023.07.31 - [2. JS๋ฌธ๋ฒ ์ข
ํฉ] - [ JavaScript ๋ฌธ๋ฒ ์ข
ํฉ๋ฐ 2์ฃผ์ฐจ (2)] ES6๋ฌธ๋ฒ, ๋จ์ถ์์ฑ๋ช
, ์ ๊ฐ๊ตฌ๋ฌธ, ํฌํ๋ฆฟ ๋ฆฌํฐ๋ด
ES6๋?
ES6๋ ECMAScript 6์ ์ค์๋ง๋ก, ์๋ฐ์คํฌ๋ฆฝํธ์ ํ์ค ๋ฒ์ ์ค ํ๋์ด๋ค. ES6๋ 2015๋
์ ๋ฐํ๋์์ผ๋ฉฐ, ES5 ์ดํ๋ก ์ธ์ด ๊ธฐ๋ฅ์ ๋ํ ์ฒซ ๋ฒ์งธ ์ฃผ์ ์
๋ฐ์ดํธ ๋์๋ค. ES6๋ ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ๋ฐ์๋ค์๊ฒ ๋ง์ ์๋ก์ด ๊ธฐ๋ฅ๊ณผ ๋ฌธ๋ฒ์ ์ ๊ณตํ๋ค.
"Es๋ฒ์ ์ ๋งค๋
๋ฒ์ ์ด ๊ฐฑ์ ๋๊ณ ์๋ค."
ES6๋ 2015๋
์ ๋ง๋ค์ด์ก๋๋ฐ, ์ด๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ์์ฒญ๋ ํจ๋ฌ๋ค์์ ๋ณํ๊ฐ ์์ด ๋ณดํต ์ฌ๋๋ค์ ES6๊ธฐ์ค์ผ๋ก (๊ทธ ์ด์ ์ ๊ตฌ๋ฒ์ ES6๋ถํฐ๋ ์ ๋ฒ์ ์ด๋ผ๊ณ ํจ) ์ค๋ช
ํ๋ค. ๊ทธ๋์ ES6๋ผ๊ณ ํ๋ฉด ES6~ํ์ฌ ES๋ฒ์ ๊น์ง๋ฅผ ํต ๋ค์ด ๋งํ๋ค.
์ฐธ๊ณ ํ ๊ด๋ จ YOUTUBE :
๊ทธ๋์, ES6์ ์ฅ์ ์?
let๊ณผ const ํค์๋๋ฅผ ๋์
ํ์ฌ ๋ธ๋ก ์ค์ฝํ๋ฅผ ์ง์ํ๊ณ , ๋ณ์์ ์ฌ์ ์ธ์ด๋ ์ฌํ ๋น์ ๋ฐฉ์งํ ์ ์๋ค. ์ด๋ ๋ณ์์ ์ ํจ ๋ฒ์๋ฅผ ์ ์ดํ๊ณ , ์ฝ๋์ ๊ฐ๋
์ฑ๊ณผ ์ ๋ขฐ์ฑ์ ๋์ด๋ ๋ฐ ๋์์ด ๋๋ค.
ํ์ดํ ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ํจ์๋ฅผ ๊ฐ๊ฒฐํ๊ณ ์ฝ๊ธฐ ์ฝ๊ฒ ์ ์ธํ ์ ์๋ค. ํ์ดํ ํจ์๋ function ํค์๋ ๋์ => ๊ธฐํธ๋ฅผ ์ฌ์ฉํ๋ฉฐ, this ๋ฐ์ธ๋ฉ์ ์๋์ผ๋ก ์์ ์ค์ฝํ์ ๋์ผํ๊ฒ ์ค์ ํ๋ค. ํ์ดํ ํจ์๋ ๋ด์ฅ ํจ์์ธ map, filter, reduce ๋ฑ๊ณผ ํจ๊ป ์ฌ์ฉํ๊ธฐ์๋ ํธ๋ฆฌํ๋ค.
ํ
ํ๋ฆฟ ๋ฆฌํฐ๋ด์ ์ฌ์ฉํ์ฌ ๋ฌธ์์ด์ ์์ฑํ๊ณ ์ฐ๊ฒฐํ๋ ์๋ก์ด ๋ฐฉ๋ฒ์ ์ ๊ณตํ๋ค. ํ
ํ๋ฆฟ ๋ฆฌํฐ๋ด์ ๋ฐฑํฑ (`)์ผ๋ก ๊ฐ์ธ๊ณ , ๋ฌธ์์ด ๋ด์์ ๋ณ์๋ ํํ์์ ${}์ผ๋ก ์ฝ์
ํ ์ ์๋ค. ๋ํ, ํ
ํ๋ฆฟ ๋ฆฌํฐ๋ด์ ์ค ๋ฐ๊ฟ์ด๋ ๊ณต๋ฐฑ์ ๊ทธ๋๋ก ์ ์งํ๋ฏ๋ก, ๋ค์ค ์ค ๋ฌธ์์ด์ ๋ง๋ค๊ธฐ์๋ ์ ์ฉํ๋ค.
ํด๋์ค๋ฅผ ๋์
ํ์ฌ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์ํ ์๋ก์ด ๋ฌธ๋ฒ์ ์ ๊ณตํ๋ค. ํด๋์ค๋ ๊ฐ์ฒด์ ํ์ ์ ์ํ๊ณ , ์์ฑ์, ๋ฉ์๋, ์์ฑ ๋ฑ์ ํฌํจํ ์ ์์ต๋๋ค. ๋ํ, ํด๋์ค๋ ์์, ์บก์ํ, ๋คํ์ฑ ๋ฑ์ ๊ฐ์ฒด ์งํฅ์ ์ธ ํน์ง์ ์ง์ํฉ๋๋ค. ํด๋์ค๋ class ํค์๋๋ก ์ ์ธํ๊ณ , new ํค์๋๋ก ์ธ์คํด์ค๋ฅผ ์์ฑํ ์ ์๋ค.
๋ชจ๋์ ๋์
ํ์ฌ ์ฝ๋๋ฅผ ์ฌ์ฌ์ฉํ๊ณ ๊ด๋ฆฌํ๊ธฐ ์ฝ๊ฒ ๋ง๋ค ์ ์๋ค. ๋ชจ๋์ import์ export ํค์๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ค๋ฅธ ํ์ผ์์ ์ ์๋ ๋ณ์๋ ํจ์๋ฅผ ๋ถ๋ฌ์ค๊ฑฐ๋ ๊ณต๊ฐํ ์ ์๋ค. ๋ชจ๋์ ์ฝ๋์ ์์กด์ฑ์ ๋ฎ์ถ๊ณ , ๋ค์์คํ์ด์ค ์ถฉ๋์ ๋ฐฉ์งํ๊ณ , ์ฝ๋์ ๊ตฌ์กฐํ์ ๋ถ๋ฆฌ์ ๋์์ด ๋๋ค.
ํ๋ก๋ฏธ์ค๋ฅผ ๋์
ํ์ฌ ๋น๋๊ธฐ ์์
์ ๊ฒฐ๊ณผ๋ฅผ ๋ํ๋ด๋ ๊ฐ์ฒด๋ฅผ ์ ๊ณตํ๋ค. ํ๋ก๋ฏธ์ค๋ pending, fulfilled, rejected๋ผ๋ ์ธ ๊ฐ์ง ์ํ๋ฅผ ๊ฐ์ง๋๋ค. ํ๋ก๋ฏธ์ค๋ then, catch, finally์ ๊ฐ์ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ๋น๋๊ธฐ ์์
์ ์ฑ๊ณต, ์คํจ, ์ข
๋ฃ์ ๋ํ ์ฝ๋ฐฑ ํจ์๋ฅผ ๋ฑ๋กํ๊ฑฐ๋ ์ฒด์ด๋ ํ ์ ์์ต๋๋ค. ํ๋ก๋ฏธ์ค๋ ์ฝ๋ฐฑ ์ง์ฅ์ ํผํ๊ณ , ๊ฐ๋
์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ ๋์ด๋ ๋ฐ ๋์์ด ๋๋ค.
๋๋จธ์ง ๋งค๊ฐ๋ณ์์ ํ์ฐ ์ฐ์ฐ์๋ฅผ ๋์
ํ์ฌ ๋ฐฐ์ด์ด๋ ๊ฐ์ฒด์ ์์๋ ์์ฑ๋ค์ ๊ฐ๋ณ ๊ฐ์ผ๋ก ์ถ์ถํ๊ฑฐ๋ ํผ์น ์ ์๋ค. ๋๋จธ์ง ๋งค๊ฐ๋ณ์๋ ํจ์๋ฅผ ์ ์ํ ๋ ๋งค๊ฐ๋ณ์ ์์ … ์ ๋ถ์ฌ์, ์ ํด์ง์ง ์์ ๊ฐ์์ ์ธ์๋ค์ ๋ฐฐ์ด๋ก ๋ฐ์ ์ ์๊ฒ ํด ์ค๋ค. ํ์ฐ ์ฐ์ฐ์๋ ๋ฐฐ์ด์ด๋ ๊ฐ์ฒด ์์ …์ ๋ถ์ฌ์, ๊ทธ ์์ ์์๋ ์์ฑ๋ค์ ๊ฐ๋ณ ๊ฐ์ผ๋ก ํผ์น ์ ์๊ฒ ํด์ค๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๋ฐฐ์ด์ด๋ ๊ฐ์ฒด๋ฅผ ๋ณต์ฌํ๊ฑฐ๋ ๋ณํฉํ๋ ๋ฑ์ ์์
์ ์ฝ๊ฒ ํ ์ ์๋ค.
ES6๋ ๊ณผ์ฐ ์ฅ์ ๋ง ์์๊น?
- ES6๋ ๊ตฌํ ์ผ๋ถ ๋ธ๋ผ์ฐ์ ๋ฅผ ์ง์ํ์ง ์๋๋ค๋ ๋จ์ ์ด ์๋ค. ( ๋ํ์ ์ธ ์๋ก IE ) ๋จ์ ์ ์๋์์ ์์ธํ ์ดํด๋ณด์!
ํธํ์ฑ์ด ๋ฎ๋ค. ES6๋ ์ต์ ๋ธ๋ผ์ฐ์ ์์ ๋๋ถ๋ถ ์ง์๋์ง๋ง, ๊ตฌํ ๋ธ๋ผ์ฐ์ ์์๋ ์ง์๋์ง ์๊ฑฐ๋ ๋ถ๋ถ์ ์ผ๋ก๋ง ์ง์๋๋ค. ๋ฐ๋ผ์, ES6๋ก ์์ฑ๋ ์ฝ๋๋ฅผ ๊ตฌํ ๋ธ๋ผ์ฐ์ ์์ ์คํํ๋ ค๋ฉด ํธ๋์คํ์ผ๋ฌ๋ ํด๋ฆฌํ๊ณผ ๊ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค. ์ฝ๋์ ์ฉ๋์ด ์ปค์ง๊ฑฐ๋ ์ฑ๋ฅ์ด ์ ํ๋ ์ ์๋ ๋ฌธ์ ๋ฅผ ๋ถ๋ฌ์ผ์ผํฌ ์ ์๋ค.
๋ณต์ก์ฑ์ด ๋๋ค. ES6๋ ๋ง์ ์๋ก์ด ๊ธฐ๋ฅ๊ณผ ๋ฌธ๋ฒ์ ๋์
ํ๊ธฐ ๋๋ฌธ์, ๊ธฐ์กด์ ์๋ฐ์คํฌ๋ฆฝํธ์๋ ๋ค๋ฅธ ์คํ์ผ๋ก ์ฝ๋๋ฅผ ์์ฑํด์ผ ํ ์ ์๋ค. ์๋ฅผ ๋ค์ด, ํด๋์ค๋ ๋ชจ๋์ ์๋ฐ์คํฌ๋ฆฝํธ์ ํ๋กํ ํ์
๊ธฐ๋ฐ ์์๊ณผ๋ ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ๊ตฌํํ๋ค. ๋ํ, ํ์ดํ ํจ์๋ ํ๋ก๋ฏธ์ค์ ๊ฐ์ ๊ธฐ๋ฅ์ this ๋ฐ์ธ๋ฉ์ด๋ ๋น๋๊ธฐ ์ฒ๋ฆฌ์ ๊ฐ์ ์ค์ํ ๊ฐ๋
์ ์ดํดํด์ผ๋ง ์ฌ๋ฐ๋ฅด๊ฒ ์ฌ์ฉํ ์ ์๋ค.
ES6์ ES5์ ๋ฌธ๋ฒ์ ๋น๊ตํด ๋ณด๋ฉด?
๋ณ์ ์ ์ธ: ES5์์๋ var ํค์๋๋ง ์ฌ์ฉํ์ฌ ๋ณ์๋ฅผ ์ ์ธํ ์ ์์๋ค. var๋ ํจ์ ์ค์ฝํ๋ฅผ ๊ฐ์ง๋ฏ๋ก, ๋ธ๋ก ๋ด์์ ์ ์ธ๋ ๋ณ์๋ ๋ธ๋ก ๋ฐ์์ ์ ๊ทผํ ์ ์์๋ค. ๋ํ, var๋ ๋ณ์์ ์ฌ์ ์ธ์ด๋ ํธ์ด์คํ
์ ํ์ฉํ๋ฏ๋ก, ์๋์น ์์ ๊ฒฐ๊ณผ๋ ์ค๋ฅ๋ฅผ ๋ฐ์์ํฌ ์ ์์๋ค. ES6์์๋ let๊ณผ const ํค์๋๊ฐ ์ถ๊ฐ๋์์ต๋๋ค. let๊ณผ const๋ ๋ธ๋ก ์ค์ฝํ๋ฅผ ๊ฐ์ง๋ฏ๋ก, ๋ณ์์ ์ ํจ ๋ฒ์๋ฅผ ์ ํํ ์ ์์ต๋๋ค. let์ ์ฌํ ๋น์ด ๊ฐ๋ฅํ ๋ณ์๋ฅผ ์ ์ธํ๊ณ , const๋ ์ฌํ ๋น์ด ๋ถ๊ฐ๋ฅํ ์์๋ฅผ ์ ์ธํ๋ค.
ํจ์ ์ ์ธ: ES5์์๋ function ํค์๋๋ฅผ ์ฌ์ฉํ์ฌ ํจ์๋ฅผ ์ ์ธํ๊ฑฐ๋ ํํ์์ผ๋ก ํ ๋นํ ์ ์์๋ค. function์ this ๋ฐ์ธ๋ฉ์ ๋์ ์ผ๋ก ๊ฒฐ์ ํ๋ฏ๋ก, ํจ์ ๋ด๋ถ์์ this๊ฐ ๊ฐ๋ฆฌํค๋ ๊ฐ์ฒด๊ฐ ๋ฌ๋ผ์ง ์ ์์์ต๋๋ค. ES6์์๋ ํ์ดํ ํจ์๊ฐ ์ถ๊ฐ๋์๋ค. ํ์ดํ ํจ์๋ => ๊ธฐํธ๋ฅผ ์ฌ์ฉํ์ฌ ํจ์๋ฅผ ๊ฐ๊ฒฐํ๊ฒ ํํํ ์ ์๋ค. ํ์ดํ ํจ์๋ this ๋ฐ์ธ๋ฉ์ ์ ์ ์ผ๋ก ๊ฒฐ์ ํ๋ฏ๋ก, ํจ์ ๋ด๋ถ์์ this๊ฐ ๊ฐ๋ฆฌํค๋ ๊ฐ์ฒด๊ฐ ๋ณํ์ง ์๋๋ค.
๋ฌธ์์ด ์์ฑ: ES5์์๋ ๋ฌธ์์ด์ ์์ฑํ๊ฑฐ๋ ์ฐ๊ฒฐํ๊ธฐ ์ํด ํฐ๋ฐ์ดํ ("")๋ ์์๋ฐ์ดํ (‘’)๋ฅผ ์ฌ์ฉํ๋ค. ๋ฌธ์์ด ๋ด์ ๋ณ์๋ ํํ์์ ์ฝ์
ํ๋ ค๋ฉด ๋ฌธ์์ด ์ฐ๊ฒฐ ์ฐ์ฐ์ (+)๋ฅผ ์ฌ์ฉํ๊ฑฐ๋, ํจ์๋ฅผ ํธ์ถํ์ฌ ๊ฐ์ ๋ฐํํด์ผ ํ๋ค. ES6์์๋ ํ
ํ๋ฆฟ ๋ฆฌํฐ๋ด์ด ์ถ๊ฐ๋์๋ค. ํ
ํ๋ฆฟ ๋ฆฌํฐ๋ด์ ๋ฐฑํฑ (`)์ผ๋ก ๊ฐ์ธ๊ณ , ๋ฌธ์์ด ๋ด์์ ๋ณ์๋ ํํ์์ ${}์ผ๋ก ์ฝ์
ํ ์ ์๋ค. ๋ํ, ํ
ํ๋ฆฟ ๋ฆฌํฐ๋ด์ ์ค ๋ฐ๊ฟ์ด๋ ๊ณต๋ฐฑ์ ๊ทธ๋๋ก ์ ์งํ๋ฏ๋ก, ๋ค์ค ์ค ๋ฌธ์์ด์ ๋ง๋ค๊ธฐ์๋ ์ ์ฉํ๋ค.
๊ฐ์ฒด ์์ฑ: ES5์์๋ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ธฐ ์ํด ์ค๊ดํธ ({ })๋ฅผ ์ฌ์ฉํ๊ฑฐ๋, ์์ฑ์ ํจ์๋ฅผ ์ ์ํ๊ณ new ํค์๋๋ก ์ธ์คํด์ค๋ฅผ ์์ฑํ ์ ์๋ค. ๊ฐ์ฒด์ ์์ฑ์ด๋ ๋ฉ์๋๋ฅผ ์ ์ํ ๋์๋ ์ฝ๋ก (:)๊ณผ function ํค์๋๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค. ES6์์๋ ํด๋์ค๊ฐ ์ถ๊ฐ๋์๋ค. ํด๋์ค๋ ๊ฐ์ฒด์ ํ์ ์ ์ํ๊ณ , ์์ฑ์, ๋ฉ์๋, ์์ฑ ๋ฑ์ ํฌํจํ ์ ์๋ค. ๋ํ, ํด๋์ค๋ ์์, ์บก์ํ, ๋คํ์ฑ ๋ฑ์ ๊ฐ์ฒด ์งํฅ์ ์ธ ํน์ง์ ์ง์ํ๋ค. ํด๋์ค๋ class ํค์๋๋ก ์ ์ธํ๊ณ , new ํค์๋๋ก ์ธ์คํด์ค๋ฅผ ์์ฑํ ์ ์๋ค.
๋ฐฐ์ด ๋ฐ ๊ฐ์ฒด ๋น๊ตฌ์กฐํ: ES5์์๋ ๋ฐฐ์ด์ด๋ ๊ฐ์ฒด์ ์์๋ ์์ฑ์ ๊ฐ๋ณ ๋ณ์๋ก ์ถ์ถํ๊ธฐ ์ํด ์ธ๋ฑ์ค๋ ์ (.) ๋๋ ๋๊ดํธ ([ ]) ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํด์ผ ํ์ต๋๋ค. ์ด๋ ์ฝ๋๊ฐ ๊ธธ์ด์ง๊ฑฐ๋ ๊ฐ๋
์ฑ์ด ๋จ์ด์ง ์ ์๋ ๋ฌธ์ ๊ฐ ์๋ค. ES6์์๋ ๋ฐฐ์ด ๋ฐ ๊ฐ์ฒด ๋น๊ตฌ์กฐํ๊ฐ ์ถ๊ฐ๋์๋ค. ๋ฐฐ์ด ๋ฐ ๊ฐ์ฒด ๋น๊ตฌ์กฐํ๋ ๋ฐฐ์ด์ด๋ ๊ฐ์ฒด์ ์์๋ ์์ฑ์ ๊ฐ๋ณ ๋ณ์๋ก ์ถ์ถํ๋ ์๋ก์ด ๋ฌธ๋ฒ์ด๋ค. ๋ฐฐ์ด ๋น๊ตฌ์กฐํ๋ ๋๊ดํธ ([ ]) ์์ ๋ณ์ ์ด๋ฆ์ ๋์ดํ๊ณ , ๊ฐ์ฒด ๋น๊ตฌ์กฐํ๋ ์ค๊ดํธ ({ }) ์์ ์์ฑ ์ด๋ฆ์ ๋์ดํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๋ฐฐ์ด์ด๋ ๊ฐ์ฒด์ ๊ฐ๋ค์ ๊ฐ๋จํ๊ฒ ํ ๋นํ๊ฑฐ๋ ๊ตํํ ์ ์๋ค.
์ฐธ๊ณ URL : https://codingapple.com/unit/es6-3-arrow-function-why/
https://www.w3schools.com/js/js_es6.asp

ํ๋ก๊ทธ๋๋ฐ ๊ธฐ์ด 1์ฃผ์ฐจ๊ฐ ๋์ด๋ฌ๋ค.
ํ์๋ค๊ณผ ๊ฐ์ด ํ๋ ์ผ์ด ๋ง์ ์ฃผ์ฐจ์๋ค.
๋ค๋ฅธ์ฌ๋๋ค์ ๋นํด ๋ด๊ฐ ๋ถ์กฑํจ์ด ๋ง์ด ๋ณด์ฌ์
๋ ์์ ์ ๋ง์ด ์ง์ฑ
ํ๋ ํ ์ฃผ ์๋๊ฒ ๊ฐ๋ค.
๋ค๋ค ๋ง์ด ๋์์ฃผ์
์ ๊ณ ๋ง์ + ๋ฏธ์ํจ์ด ๋์์ ๊ณต์กดํ๋ค!
๋ฐฐ์ด๊ฒ๋ ๋ง์๊ณ , ์์ผ๋ก ๋ฐฐ์ธ๊ฒ๋ ๋ง๋ค.
๋ฉํ ๊ด๋ฆฌ ์ ํด์ผ์ง ๋ค์์ฃผ๋ ์ ๋ถํํด ๋์์ !!!!!!