๐ ๋ณธ ํฌ์คํธ๋ '๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ Deep Dive' ๋์๋ฅผ ๋ฐํ์ผ๋ก ํต์ฌ ๊ฐ๋ ๋ฐ ๋ด์ฉ์ ์์ฝํ ํฌ์คํธ์ ๋๋ค.
02์ฅ ์๋ฐ์คํฌ๋ฆฝํธ๋?
2.1 ์๋ฐ์คํฌ๋ฆฝํธ์ ํ์
- 1995๋ , ๋ท์ค์ผ์ดํ ์ปค๋ฎค๋์ผ์ด์ ์ฆ์์ ์น ํ์ด์ง์ ๋ณด์กฐ์ ์ธ ๊ธฐ๋ฅ์ ์ํํ๊ธฐ ์ํ์ฌ ๋ธ๋ผ์ฐ์ ์์ ๋์ํ๋ ๊ฒฝ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ๋์ ํ๊ธฐ๋ก ๊ฒฐ์
- 1996๋ 3์, ๋ท์ค์ผ์ดํ ๋ด๋น์ผ์ดํฐ 2์ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ฌ. "๋ชจ์นด"๋ก ๋ช ๋ช
- 1996๋ 9์, "๋ชจ์นด" -> "๋ผ์ด๋ธ์คํฌ๋ฆฝํธ" ๋ช ๋ช
- 1996๋
12์, "๋ผ์ด๋ธ์คํฌ๋ฆฝํธ" -> "์๋ฐ์คํฌ๋ฆฝํธ" ์ต์ข
๋ช
๋ช
์์ ๊ฐ์ ๊ณผ์ ์ผ๋ก ํ์ํ ์๋ฐ์คํฌ๋ฆฝํธ๋ ํ์ฌ ๋ชจ๋ ๋ธ๋ผ์ฐ์ ์ ํ์ค ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ์๋ฆฌ ์ก๊ณ ์๋ค.
2.2 ์๋ฐ์คํฌ๋ฆฝํธ์ ํ์คํ
์๋ฐ์คํฌ๋ฆฝํธ๋ ํ์๊ณผ ๋์์ ์ํํ๊ฒ ์ฑ์ฅํ ๊ฒ์ ์๋์๋ค. ์๋ฐ์คํฌ๋ฆฝํธ์ ์ถ์๊ฐ ์ผ๋ง ์ง๋์ง ์์ 1996๋ 8์, ๋ง์ดํฌ๋ก์ํํธ๊ฐ ์๋ฐ์คํฌ๋ฆฝํธ์ ํ์ ๋ฒ์ ์ธ JScript๋ฅผ ์ธํฐ๋ท ์ต์คํ๋ก๋ฌ 3.0์ ํ์ฌํ์๋ค.
์ด๋ ๋ฐ์ํ ๋ฌธ์ ๊ฐ JScript๊ฐ ์๋ฐ์คํฌ๋ฆฝํธ์ ํ์คํ๋์ง ๋ชปํ๊ณ ์ ๋นํ ์์ค์ผ๋ก ํธํ๋์๋ค๋ ๊ฒ์ด๋ค. ๋ท์ค์ผ์ดํ ์ปค๋ฎค๋์ผ์ด์ ์ฆ์ ๋ง์ดํฌ๋ก์ํํธ๊ฐ ์๋ก์ ์์ฌ ๋ธ๋ผ์ฐ์ ์ ์์ฅ ์ ์ ์จ์ ๋์ด๊ธฐ ์ํ์ฌ ๊ฐ ์์ฌ ๋ธ๋ผ์ฐ์ ์์๋ง ๋์ํ๋ ๊ธฐ๋ฅ์ ์ถ๊ฐํ ๊ฒฐ๊ณผ์๋ค.
์ด๋ก ์ธํ์ฌ ๋ธ๋ผ์ฐ์ ์ ๋ฐ๋ผ ์นํ์ด์ง๊ฐ ์ ์์ ์ผ๋ก ๋์ํ์ง ์๋ ํฌ๋ก์ค ๋ธ๋ผ์ฐ์ง ์ด์๊ฐ ๋ฐ์ํ๊ธฐ ์์ํ์๊ณ ๋ชจ๋ ๋ธ๋ผ์ฐ์ ์์ ์ ์์ ์ผ๋ก ๋์ํ๋ ์น ํ์ด์ง๋ฅผ ๊ฐ๋ฐํ๋ ๊ฒ์ ์ ์ ์ด๋ ค์์ก๋ค.
19696๋ 11์, ์ด๋ฌํ ์๋ฐ์คํฌ๋ฆฝํธ ํํธํ ๋ฑ์ ๋ฌธ์ ์ ์ ํด๊ฒฐํ๊ธฐ ์ํ์ฌ ๋ท์ค์ผ์ดํ ์ปค๋ฎค๋์ผ์ด์ ์ฆ๋ ์ปดํจํฐ ์์คํ ์ ํ์ค์ ๊ด๋ฆฌํ๋ ๋น์๋ฆฌ ํ์คํ ๊ธฐ๊ตฌ 'ECMA ์ธํฐ๋ด์ ๋'์ ์๋ฐ์คํฌ๋ฆฝํธ์ ํ์คํ๋ฅผ ์์ฒญํ์๋ค.
1997๋ 7์, ECMA-262๋ผ๊ณ ๋ถ๋ฆฌ๋ ํ์คํ๋ ์๋ฐ์คํฌ๋ฆฝํธ ์ดํ(ECMAScript 1) ์ฌ์์ด ์์ฑ๋์์ผ๋ฉฐ ์ํ๊ถ ๋ฌธ์ ๋ก ์ธํ์ฌ ์๋ฐ์คํฌ๋ฆฝํธ๋ ECMAScript๋ก ๋ช ๋ช ๋๋ค.
์ด์ด ECMAScript๋ ๊ณ์ํ์ฌ ์๋ก์ด ๋ฒ์ ์ด ์ถ์๋์๊ณ ์ ๋ฆฌํ์ฌ ์๋ ํ์ ๊ฐ๋ค.
๋ฒ์ | ์ถ์ ์ฐ๋ | ํน์ง |
ES1 | 1997 | ์ดํ |
ES2 | 1998 | ISO/IEC 16262 ๊ตญ์ ํ์ค๊ณผ ๋์ผํ ๊ท๊ฒฉ์ ์ ์ฉ |
ES3 | 1999 | ์ ๊ท ํํ์, try ... catch |
ES5 | 2009 | HTML5์ ํจ๊ป ์ ์๋ ํ์ค์ JSON, strict mode, ์ ๊ทผ์ ํ๋กํผํฐ, ํ๋กํผํฐ ์ดํธ๋ฆฌ๋ทฐํธ ์ ์ด, ํฅ์๋ ๋ฐฐ์ด ์กฐ์ ๊ธฐ๋ฅ(forEach, map, filter, reduce, some, every) |
ES6(ECMAScript 2015) | 2015 | let/const, ํด๋์ค, ํ์ดํ ํจ์, ํ ํ๋ฆฟ ๋ฆฌํฐ๋ด, ๋์คํธ๋ญ์ฒ๋ง ํ ๋น, ์คํ๋ ๋ ๋ฌธ๋ฒ, rest ํ๋ผ๋ฏธํฐ, ์ฌ๋ฒ, ํ๋ก๋ฏธ์ค, Map/Set, ์ดํฐ๋ฌ๋ธ, for ... of, ์ ๋๋ ์ดํฐ, Proxy, ๋ชจ๋, import/export |
ES7(ECMAScript 2016) | 2016 | ์ง์(**) ์ฐ์ฐ์, Array.prototype.includes, String.prototype.includes |
ES8(ECMAScript 2017) | 2017 | async/await, Object ์ ์ ๋ฉ์๋ |
ES9(ECMAScript 2018) | 2018 | Object rest/spread ํ๋กํผํฐ, Promise.prototype.finally, async generator, for await ... of |
ES10(ECMAScript 2019) | 2019 | Object.forEntries, Array.prototype.flat, Array.prototype.flatMap, optional catch binding |
ES11(ECMAScript 2020) | 2020 | String.prototype.matchAll, BigInt, globalThis, Promise.allSettled, null ๋ณํฉ ์ฐ์ฐ์, ์ต์ ๋ ์ฒด์ด๋ ์ฐ์ฐ์, for ... in enumeration order |
2.3 ์๋ฐ์คํฌ๋ฆฝํธ ์ฑ์ฅ์ ์ญ์ฌ
์ด์ฐฝ๊ธฐ ์๋ฐ์คํฌ๋ฆฝํธ๋ ์นํ์ด์ง์ ๋ณด์กฐ์ ๊ธฐ๋ฅ ์ํ์ ์ํ์ฌ ํ์ ์ ์ธ ์ฉ๋๋ก ์ฌ์ฉ๋์๋ค. ๋๋ถ๋ถ์ ๋ก์ง์ ์น ์๋ฒ์์ ์คํํ๊ณ , ๋ธ๋ผ์ฐ์ ๋ ์ ๋ฌ๋ฐ์ HTML CSS๋ฅผ ๋ ๋๋งํ๋ ์์ค์ด์๋ค.
2.3.1. Ajax
1999๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ด์ฉํ์ฌ ์๋ฒ์ ๋ธ๋ผ์ฐ์ ๋น๋๊ธฐ ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ตํํ ์ ์๋ ํต์ ๊ธฐ๋ฅ์ธ Ajax๊ฐ XMLHttpRequest๋ผ๋ ์ด๋ฆ์ผ๋ก ๋ฑ์ฅํ์๋ค(๋ฌผ๋ก ํ์ฌ๋ fetch๋ก ์ธํ์ฌ ๊ฑฐ์ ์ฌ์ฉํ์ง ์๋๋ค).
Ajax ๋ฑ์ฅ ์ด์ ๊น์ง ์น ํ์ด์ง๋ html ํ๊ทธ๋ก ์์ํ์ฌ html ํ๊ทธ๋ก ๋๋๋ ์จ์ ํ HTML ์ฝ๋๋ฅผ ์๋ฒ๋ก๋ถํฐ ์ ์ก ๋ฐ์ ํ์ด์ง ์ ์ฒด๋ฅผ ๋ ๋๋งํ๋ ๋ฐฉ์์ผ๋ก ๋์ํ์๋ค.
์ด๋ฌํ ๋ฐฉ์์ ๋ณ๊ฒฝ์ด ํ์ ์๋ ๋ถ๋ถ๊น์ง ํฌํจ๋ HTML ์ฝ๋ ์๋ฒ๋ก๋ถํฐ ๋ค์ ์ ์ก๋ฐ๊ธฐ ๋๋ฌธ์ ๋ถํ์ํ ๋ฐ์ดํฐ ํต์ ๊ณผ ๋ ๋๋ง์ด ํ์ ์๋ ๋ถ๋ถ๊น์ง ๋ค์ ๋ ๋๋ง๋์ด ์ฑ๋ฅ๋ฉด์์ ๋ถ๋ฆฌํ์๋ค. ๋ํ, ํ๋ฉด ์ ํ ์ ์๋ฒ ์์ฒญ, ์ฌ๋ ๋๋ง์ด ๋๋ฐ๋๋ฉฐ ํ๋ฉด์ด ์๊ฐ์ ์ผ๋ก ๊น๋นก์ด๋ ํ์์ด ๋ฐ์ํ๊ณ ์น ํ์ด์ง์ ํ๊ณ๋ก ๋ฐ์๋ค์ฌ์ก๋ค.
ํ์ง๋ง Ajax์ ๋ฑ์ฅ ์ดํ๋ก ํ์ํ ๋ฐ์ดํฐ๋ง์ ์๋ฒ์ ์์ฒญํ๊ณ ๋ฐ์์จ ๋ค, ํ์ํ ๋ถ๋ถ๋ง ๋ ๋๋งํ๋ ๊ฒ์ผ๋ก ์น ๋ธ๋ผ์ฐ์ ์์๋ ๋ฐ์คํฌํฑ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ์ ์ฌํ ๋น ๋ฅธ ์ฑ๋ฅ๊ณผ ๋ถ๋๋ฌ์ด ํ๋ฉด ์ ํ์ด ๊ฐ๋ฅํด์ก๋ค.
2.3.2. jQuery
2006๋ , jQuery๊ฐ ๋ฑ์ฅํจ์ ๋ฐ๋ผ ๋ค์ ๋ค๋ฃจ๊ธฐ ๋ฒ๊ฑฐ๋ก์ ๋ DOM(Document Object Model) ์กฐ์์ ๋ณด๋ค ์ฝ๊ฒ ์ ์ดํ ์ ์๊ฒ ๋์๋ค. jQuery๋ ๋์ ์ฌ์ฉ์ ์ธต์ ์์๊ฐ์ ํ๋ณดํ์๊ณ ๋ฐฐ์ฐ๊ธฐ ํ๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ณด๋ค jQuery๋ฅผ ์ ํธํ๋ ๊ฐ๋ฐ์๊ฐ ๋ง์ด ๋ํ๋๊ฒ ๋์๋ค.
๋ฌผ๋ก ํ์ฌ์๋ jQuery๋ฅผ ์ฌ์ฉํ๋ ์ถ์ธ๊ฐ ์ ์ ์ค์ด๋ค๊ณ ์์ผ๋ฉฐ ๋๋ถ๋ถ์ด ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ด์ฉํ๋ ๊ฒ์ผ๋ก ๋ณด์ธ๋ค(์ค์ ๋ก ๊ฐ๋ฐ์ ์ฒ์ ์ ํ์ ๋น์์๋ jQuery๋ฅผ ๊ถ์ฅํ๋ ๋ชจ์ต๋ ์ข ์ข ๋ณผ ์ ์์๋ค).
2.3.3. V8 ์๋ฐ์คํฌ๋ฆฝํธ ์์ง
์๋ฐ์คํฌ๋ฆฝํธ์ Ajax๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋์ํ๋ ๊ตฌ๊ธ ๋งต์ค์ ์ฑ๊ณต์ ์ธ ๋ฑ์ฅ์ผ๋ก ์๋ฐ์คํฌ๋ฆฝํธ๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก์์ ๊ฐ๋ฅ์ฑ์ด ํ์ธ๋์๋ค. ์ด์ ๋ฐ๋ผ ๋์ฑ ๋น ๋ฅด๊ฒ ๋์ํ๋ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ด ํ์ํ์๊ณ ์ด๋ฌํ ์๊ตฌ์ ๋ถํฉํ๋ 'V8 ์๋ฐ์คํฌ๋ฆฝํธ ์์ง'์ด ๋ฑ์ฅํ์๋ค.
V8 ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ผ๋ก ์ด๋ฐ๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ๋ฐ์ ์ผ๋ก ๊ณผ๊ฑฐ์๋ ์น ์๋ฒ์์ ์ํ๋๋ ๋ก์ง๋ค์ด ๋๋ค์ ํด๋ผ์ด์ธํธ ์ชฝ์ผ๋ก ์ด๋ํ๊ฒ ๋์๊ณ ์น ๊ฐ๋ฐ์์ ํ๋ก ํธ์๋ ์์ญ์ด ์ฃผ๋ชฉ๋ฐ๊ฒ ๋์๋ค.
2.3.4. Node.js
2009๋ , ๋ผ์ด์ธ ๋ฌ์ด ๋ฐํํ Node.js๋ ๊ตฌ๊ธ V8 ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ผ๋ก ๋น๋๋ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฐํ์ ํ๊ฒฝ์ด๋ค.
Node.js์ ๋ฑ์ฅ์ผ๋ก ๋ธ๋ผ์ฐ์ ์ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ์ข ์๋์ด ์๋ ์๋ฐ์คํฌ๋ฆฝํธ ์คํ ํ๊ฒฝ์ ๋ธ๋ผ์ฐ์ ์์ ๋ ๋ฆฝ์ํฌ ์ ์์๋ค. Node.js๋ ์ฌ๋ฌ ํ๋ซํผ์ ์ ์ฉ๋ ์ ์์ง๋ง ๋๋ถ๋ถ์ด ์๋ฒ ์ฌ์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ์ฃผ๋ก ์ฌ์ฉ๋๋ฉฐ ์ด์ ํ์ํ ๋ชจ๋, ํ์ผ ์์คํ , HTTP ๋ฑ ๋ด์ฅ API๋ฅผ ์ ๊ณตํ๋ค.
๋ํ, Node.js๋ ๋น๋๊ธฐ ์ ์ถ๋ ฅ์ ์ง์ํ๋ฉฐ '๋จ์ผ ์ค๋ ๋ ์ด๋ฒคํธ ๋ฃจํ' ๊ธฐ๋ฐ์ผ๋ก ๋์ํ์ฌ ์์ฒญ ์ฒ๋ฆฌ ์ฑ๋ฅ์ด ์ข๋ค๋ ์ฅ์ ์ ๊ฐ์ง๋ค. ์ด์ ๋ฐ์ดํฐ๋ฅผ ์ค์๊ฐ์ผ๋ก ์ฒ๋ฆฌํ๊ธฐ ์ํ์ฌ ์ ์ถ๋ ฅ์ด ์ฆ์ SPA์ ์ ํฉํ๋ฉฐ CPU ์ฌ์ฉ์ด ๋์ ์ ํ๋ฆฌ์ผ์ด์ ์๋ ๊ถ์ฅ๋์ง ์๋๋ค.
2.3.5. SPA(Single Page Application) ํ๋ ์์ํฌ
์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐ์คํฌํฑ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ๋น๊ตํด๋ ์์ ์๋ ์ฑ๋ฅ๊ณผ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ๋ ๊ฒ์ด ํ์๊ฐ ๋์๊ณ ์ด์ ๋ฐ๋ผ ๊ฐ๋ฐ ๊ท๋ชจ์ ๋ณต์ก๋๊ฐ ์์นํ๊ฒ ๋์๋ค.
์ด์ ๊ฐ๋ฐ ๋ฐฉ์์ผ๋ก๋ ๋ณต์กํด์ง ๊ฐ๋ฐ ๊ณผ์ ์ ์ํํ๊ธฐ ํ๋ค์๊ณ , ๋ณ๊ฒฝ์ ์ ์ฐํ๋ฉด์ ์ ํ๋ฆฌ์ผ์ด์ ์ํคํ ์ฒ์ ๊ตฌ์ถ์ ์ฝ๊ฒ ํด์ค ์ ์๋ SPA ํ๋ ์์ํฌ๋ค์ด ๋ฑ์ฅํ์๋ค.
์ด ํ๋ ์์ํฌ๋ค์ CBD(Component based development) ๋ฐฉ๋ฒ๋ก ์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ Angular, React, Vue.js ๋ฑ์ด๋ฉฐ ํ์ฌ ๋ง์ ์ฌ์ฉ์ธต์ ํ๋ณดํ๊ณ ์๋ค.
2.4 ์๋ฐ์คํฌ๋ฆฝํธ์ ECMAScript
ECMAScript๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ํ์ค ์ฌ์์ธ ECMA-262๋ฅผ ์๋ฏธํ๋ฉฐ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๊ฐ, ํ์ , ๊ฐ์ฒด์ ํ๋กํผํฐ, ํจ์, ํ์ค ๋นํธ์ธ ๊ฐ์ฒด ๋ฑ์ ํต์ฌ ๋ฌธ๋ฒ์ ๊ท์ ํ๋ค. ๊ฐ ๋ธ๋ผ์ฐ์ ์ ์กฐ์ฌ๋ ECMAScript ์ฌ์์ ์ค์ํ์ฌ ๋ธ๋ผ์ฐ์ ์์ ๋ด์ฅ๋๋ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ๊ตฌํํ๋ค.
์๋ฐ์คํฌ๋ฆฝํธ๋ ECMAScript๋ฅผ ํฌํจํ๋ ์์ ๊ฐ๋ ์ด๋ค. ์๋ฐ ์คํฌ๋ฆฝํธ๋ ์ผ๋ฐ์ ์ผ๋ก ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก์ ๊ธฐ๋ณธ ๋ผ๋๋ฅผ ์ด๋ฃจ๋ ECMAScript์ ๋ธ๋ผ์ฐ์ ์์ ๋ณ๋ ์ง์ํ๋ ํด๋ผ์ด์ธํธ ์ฌ์ด๋ Web API(DOM, BOM, XMLHttpRequest, fetch ๋ฑ)๋ฅผ ์์ฐ๋ฅด๋ ๊ฐ๋ ์ด๋ค.
JavaScript = ECMAScript + ํด๋ผ์ด์ธํธ ์ฌ์ด๋ Web API
2.5 ์๋ฐ์คํฌ๋ฆฝํธ์ ํน์ง
์๋ฐ์คํฌ๋ฆฝํธ๋ HTML, CSS์ ํจ๊ป ์น์ ๊ตฌ์ฑํ๋ ์์ ์ค ํ๋๋ก ์น ๋ธ๋ผ์ฐ์ ์์ ๋์ํ๋ ์ ์ผํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ด๋ค. ์๋ฐ์คํฌ๋ฆฝํธ ์ญ์ ๊ธฐ์กด ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ ๋ง์ ์ํฅ์ ๋ฐ์๋ค. ๊ธฐ๋ณธ ๋ฌธ๋ฒ์ C, ์๋ฐ์ ์ ์ฌํ๊ณ ์ ํ์์๋ ํ๋กํ ํ์ ๊ธฐ๋ฐ ์์์, ์คํด์์๋ ์ผ๊ธ ํจ์์ ๊ฐ๋ ์ ์ฌ์ฉํ๋ค.
์๋ฐ์คํฌ๋ฆฝํธ๋ ๊ฐ๋ฐ์๊ฐ ๋ณ๋์ ์ปดํ์ผ ์์ ์ ์ํํ์ง ์๋ ์ธํฐํ๋ฆฌํฐ ์ธ์ด์ด๋ค. ๋๋ถ๋ถ์ ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ์ธํฐํ๋ฆฌํฐ์ ์ปดํ์ผ๋ฌ์ ์ฅ์ ์ ๊ฒฐํฉํด ๋น๊ต์ ์ฒ๋ฆฌ ์๋๊ฐ ๋๋ฆฐ ์ธํฐํ๋ฆฌํฐ์ ๋จ์ ์ ํด๊ฒฐํ์๋ค.
๋๋ถ๋ถ์ ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ์์ ์ฌ์ฉ๋๋ ์ธํฐํ๋ฆฌํฐ๋ ์ ํต์ ์ธ ์ปดํ์ผ๋ฌ ์ธ์ด์ฒ๋ผ ๋ช ์์ ์ธ ์ปดํ์ผ ๋จ๊ณ๋ฅผ ๊ฑฐ์น์ง๋ ์์ง๋ง ๋ณต์กํ ๊ณผ์ ์ ๊ฑฐ์น๋ฉฐ ์ผ๋ถ ์์ค์ฝ๋๋ฅผ ๋ฐํ์์ ์ปดํ์ผํ๊ณ ์คํํ๋ค.
์ด๋ฅผ ํตํ์ฌ ์ธํฐํ๋ฆฌํฐ ์ธ์ด์ ๋์ ๊ธฐ๋ฅ ์ง์์ ์ด๋ฆฌ๋ฉด์ ์คํ ์๋๊ฐ ๋๋ฆฌ๋ค๋ ๋จ์ ์ ๊ทน๋ณตํ ์ ์๋ค.
์๋ฐ์คํฌ๋ฆฝํธ๋ ๋ช ๋ นํ, ํจ์ํ, ํ๋กํ ํ์ ๊ธฐ๋ฐ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์ง์ํ๋ ๋ฉํฐ ํจ๋ฌ๋ค์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ด๋ค. ๋น๋ก ๋ค๋ฅธ ๊ฐ์ฒด์งํฅ ์ธ์ด์์ ์ฐจ์ด์ ์ ๋ํ ๋ ผ์์ด ์๊ธด ํ์ง๋ง ๊ฐ๋ ฅํ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ ๋ฅ๋ ฅ์ ์ง๋๊ณ ์๋ค.
2.6 ES6 ๋ธ๋ผ์ฐ์ ์ง์ ํํฉ
์ธํฐ๋ท ์ต์คํ๋ก๋ฌ๋ฅผ ์ ์ธํ ๋๋ถ๋ถ์ ๋ชจ๋ ๋ธ๋ผ์ฐ์ ๋ ES6๋ฅผ ์ง์ํ์ง๋ง 100% ์ง์ํ๊ณ ์์ง๋ ์๋ค.
์ ์ฌ์ง์ฒ๋ผ ES6๋ฅผ ์ง์ํ์ง ์๋ ๋ธ๋ผ์ฐ์ ์ ๊ฒฝ์ฐ์๋ ๋ฐ๋ฒจ(Babel)๊ณผ ๊ฐ์ ํธ๋์คํ์ผ๋ฌ๋ฅผ ์ฌ์ฉํ์ฌ ES6 ์ด์์ ์ฌ์์ผ๋ก ๊ตฌํํ ์์ค์ฝ๋๋ฅผ ES5 ์ดํ์ ์ฌ์์ผ๋ก ๋ค์ด๊ทธ๋ ์ด๋ํ ํ์๊ฐ ์๋ค.