๋ค์ด๊ฐ๋ฉฐ
์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ฒ์ ๊ณต๋ถํ๋ ์ฌ๋๋ค์ด๋ผ๋ฉด ์๋ฐ์คํฌ๋ฆฝํธ ์์ ๋ถ๋ ์์์ด์ธ '๋ชจ๋'์ด ๋ฌด์์ธ์ง ๊ถ๊ธํ ๊ฒ์ด๋ค. ๊ฐ๋ฐ์๋ค์ ๋๋ฌด๋๋ ์์ฐ์ค๋ฝ๊ฒ ์ฌ์ฉํ๋ '๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ' ๋ผ๋ ๋จ์ด๋ฅผ ๋ ์์ธํ ์์๋ณด์.
์ผ๋ฐ์ ์ธ ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ์๋ฏธ
๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ๋, ECMAScript6(2015) ์ดํ์ ๋ฐฉ๋ฒ๋ก ์ ๊ตฌํํ ์๋ฐ์คํฌ๋ฆฝํธ๋ค.
ํ๋ง๋๋ก ์ ์ํ์๋ฉด, ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ์์์ '๋ชจ๋'์ ํ์ฌ์ ๊ฐ๋ฐ ํ์ค๊ณผ ๊ดํ์ ๋ฐ๋ฅด๋ฉฐ, ์ต์ ๋ธ๋ผ์ฐ์ ์ ์น ๊ฐ๋ฐ ๋๊ตฌ์์ ์ง์๋๋ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฒ์ ๋ฐ ๊ธฐ์ ์ ๊ฐ๋ฆฌํจ๋ค. ์ด๋ ECMAScript 6 (ES6) ์ดํ์ ๊ธฐ๋ฅ๊ณผ ๊ฐ์ ๋ ๊ฐ๋ฐ ๋ฐฉ๋ฒ๋ก ์ ํฌํจํ๋ค.
ํ์๊ฐ ์ด์ ์ ์์ฑํ <์์๋๋ฉด ์ฌ๋ฏธ์๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ์ญ์ฌ>๋ฅผ ๋ณด๋ฉด ์ ์ ์๋ฏ์ด, ์๋ฐ์คํฌ๋ฆฝํธ์ ๊ทธ๊ฐ ์ญ์ฌ์์ ES6๋ฅผ ๋นผ๋๊ณ ์ด์ผ๊ธฐํ ์ ์์ ์ ๋๋ก ๊ต์ฅํ ๋ง์ ๋ฐ์ ์ด ์์๋ค. ๋๋ฌธ์ ์ด๋ฅผ ๊ธฐ์ ์ผ๋ก 'modern'์ด๋ผ๋ ์ฉ์ด๊น์ง ์๊ธด ๊ฒ์ด๋ค.
๋๋ถ์ด, ES5(2009)์ ES6(2015) ์ถํ ์๊ธฐ ๊ฐ์ ๊ฐ๊ทน์ด ํฌ๊ธฐ๋ ํด์, ๋ค์์ ๊ฐ๋ฐ์๋ค์ด ๋น๊ณต์์ ์ผ๋ก ES6์ ๊ทธ ์ดํ์ ํ์ ๊ตฌํํ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ '๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ'๋ผ๊ณ ๋ถ๋ฅด๊ธฐ๋ ํ๋ค.
๊ฒฐ๊ตญ ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ ๋ ๋์ ๊ฐ๋ ์ฑ, ์ฑ๋ฅ, ์ ์ง ๋ณด์์ฑ์ ์ ๊ณตํ๋ฉฐ, ์ด์ ๋ฒ์ ์ ์๋ฐ์คํฌ๋ฆฝํธ์ ๋น๊ตํด ๋ ํ๋์ ์ด๊ณ ํจ์จ์ ์ธ ๋ฐฉ์์ผ๋ก ์ฝ๋๋ฅผ ์์ฑํ๋ ๊ฒ์ ์๋ฏธํ๋ค๊ณ ๋ณผ ์ ์๋ค.
๋ฌผ๋ก ES7, ES8 ๋ฐ ์ดํ์ ECMAScript ๋ฒ์ ์ ์ํ๋ ๊ธฐ๋ฅ๋ ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ํฌํจ๋ ์ ์๋ค. ES7, ES8, ๊ทธ๋ฆฌ๊ณ ๋ ๋์ค์ ๋ฒ์ ์ ํ์ค ECMAScript ์คํ์ ์ผ๋ถ๋ก์ ๋ธ๋ผ์ฐ์ ์ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์์ ์ง์ํ ๋ ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ์ผ๋ถ๋ก ๊ฐ์ฃผ๋๋ค. ๊ทธ๋ฌ๋ ๋ชจ๋ ๊ธฐ๋ฅ์ ๋ชจ๋ ํ๊ฒฝ์์ ์ฌ์ฉํ ์ ์๋ ๊ฒ์ ์๋๋ฉฐ, ๋ธ๋ผ์ฐ์ ํธํ์ฑ๊ณผ ํ๊ฒฝ์ ๋ฐ๋ผ ๋ค๋ฅผ ์ ์๋ค.
๊ทธ๋ ๋ค๋ฉด ํน์ ๋ธ๋ผ์ฐ์ ์์ ํธํ๋์ง ์๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ๊ณผ์ฐ, ๋ชจ๋ํ๋ค๊ณ ํ ์ ์์๊น?
์ด ์๋ฌธ์ ๋ํด ๊ตฌ๊ธ์ด ๋์์ ์์ํ๊ฒ ๋ต์ ํด์ค๋ค.
๊ตฌ๊ธ์ด ์ ์ํ๋ ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ์๋ฏธ
๋ง์นจ, 2020 Google Chrome Dev Summit์์ ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ๋ํ ์ ์๋ฅผ ๋ด๋ ธ๋๋ฐ ํฅ๋ฏธ๋ก์ ๊ฐ์ ธ์ ๋ณด์๋ค. ์ด๋ค์ด ๋งํ๋ ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ๋, ์๋์ ๊ฐ๋ค.
Modern JavaScript๋, ๋ชจ๋ ๋ชจ๋ ๋ธ๋ผ์ฐ์ ์์ ์ง์ํ๋ ๋ฌธ๋ฒ์ผ๋ก ์์ฑ๋ JavaScript ์ฝ๋๋ฅผ ์๋ฏธํ๋ค.
์ ์์์์ ๋งํ๋ ๋ชจ๋ํ ๋ธ๋ผ์ฐ์ ๋, ์์ฅ ์ ์ ์จ ์ฝ 90%๋ฅผ ์ฐจ์งํ๋ Chrome, Firefox, Safari, Edge์ 5%๋ฅผ ์ฐจ์งํ๋ Opera, ์ผ์ฑ ๋ธ๋ผ์ฐ์ ๋ฅผ ํฌํจํ๋ค. ์ฐธ๊ณ ๋ก ์ 95%์ ๋ธ๋ผ์ฐ์ ๊ฐ ES8(2017)์ ์ง์ํ๋ค๊ณ ํ๋ค.
์ถ๊ฐ์ ์ผ๋ก, ์์์์ Block Scoping(ES2015), ๊ตฌ์กฐ๋ถํดํ ๋น(ES2015), Spread Syntax(ES2015) ๋ฑ ๊ฐ ๋ฌธ๋ฒ๋ค์ ๋ธ๋ผ์ฐ์ ์ง์์จ์ ์๋ ค์ฃผ๋ ๊ถ๊ธํ๋ค๋ฉด ์์์ ๋ด๋ ์ข๋ค.
๋ง๋ฌด๋ฆฌํ๋ฉฐ
'๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ'๋ผ๋ ๋จ์ด๋ ๊ทธ์ '์ ์ต์ ํ์ด๊ตฌ๋~' ํ๊ณ ๋๊ธธ ์๋ ์์ง๋ง, ์ด๋ ๋ฒ์ ์ผ๋ก(?) ์ ์๋ ๊ฒ์ด ์๋๋ ์ฌ๋๋ค๋ง๋ค ํด์์ด ๊ฐ๊ธฐ ๋ค๋ฅผ ์ ์๋ค. ๊ทธ๋ ๋ค๋ฉด ๊ทธ๋ค์ ์, ์ด๋ค ๋งฅ๋ฝ์ผ๋ก ๊ทธ๋ ๊ฒ ํด์ํ๋์ง ์ด์ ๋ฅผ ์๋ฉด ๋ ์ฌ๋ฐ๋ ๊ฒ ๊ฐ๋ค.
๊ฐ์ธ์ ์ผ๋ก ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ์ ์๋ ๊ตฌ๊ธ์ด ๋ด๋ฆฐ ์ ์๊ฐ ๋ ์๋ฟ๋๋ค. ์๋ฌด๋ฆฌ newest ์ต์ ํ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฌธ๋ฒ์ด๋ผ๋, ์ ์ฉ๋์ง ์์ผ๋ฉด ์ธ๋ชจ๊ฐ ์์๊น ์ถ๋ค. ๊ฒฐ๊ตญ ์ฌ์ฉ์์ ๋ง๋ฟ์์๋ ๋ธ๋ผ์ฐ์ ์ ์ง์์ด ๋์ด ์ค์ ๋ก ์ฌ์ฉ ๋ฐ ์ ์ฉ๋์ด์ผ ์ง์ง ๋ชจ๋ํ ๊ฒ ์๋๊น ์ถ๋ค.
๋ค์์๋ '๋ฐ๋๋ผ ์๋ฐ์คํฌ๋ฆฝํธ'์ ์๋ฏธ๋ ๋ฌด์์ด๋ฉฐ, ์ด๋ค ๋งฅ๋ฝ์์ ํด์๋๋์ง ์์๋ณด๊ฒ ๋ค.
๐ ๋ด์ฉ ์ฐธ์กฐ
- Medium(Bora Lee) : ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ ๋ฌด์์ธ๊ฐ
- Youtube(Google Chrome Developers) : Transitioning to modern JavaScript
'๐ ์์ธ ์ง์ > ์์๋๋ฉด ์ข์' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ ์คํธ ๋๋ธ Mock vs. Stub vs. Spy ์ฐจ์ด ์์๋ณด๊ธฐ (2) | 2023.11.27 |
---|---|
๋งํฌ๋ค์ด์ผ๋ก ํ ๊ธ ๊ธฐ๋ฅ์ ์ธ ์ ์์๊น? (0) | 2023.06.30 |
ํด๋ผ์ด์ธํธ ๋ฐฐํฌ๋ ์ ๊ธฐํ๊ณ ์ฌ๋ฐ์ด ๊ทธ๋ฆฌ๊ณ ๊ธด์ฅ๋ผ ... (0) | 2023.06.05 |
์์๋๋ฉด ์ธ๋ฐ์๋ package.json๊ณผ package-lock.json์ ์ฐจ์ด (3) | 2023.04.30 |
ํ๋ก ํธ์๋ ๊ฐ๋ฐ์๊ฐ ์ UI/UX๋ฅผ ์์์ผ ํฉ๋๊น? (11) | 2023.04.16 |
๋๊ธ