JavaScript ๋ชจ๋ ์ ํจ์ฑ ๊ฒ์ฌ์ ๋ํ ์ข ํฉ ๊ฐ์ด๋๋ก, ์ ์ธ๊ณ์ ์ผ๋ก ๋ถ์ฐ๋ ํ๋ก์ ํธ์์ ์ฝ๋ ํ์ง๊ณผ ์์ ์ฑ์ ๊ฐ์ ํ๊ธฐ ์ํ ๋ค์ํ ๊ธฐ์ ๊ณผ ๋๊ตฌ๋ฅผ ๋ค๋ฃน๋๋ค.
JavaScript ๋ชจ๋ ์ ํจ์ฑ ๊ฒ์ฌ: ์ ์ธ๊ณ์ ์ผ๋ก ์ฝ๋ ํ์ง ๋ณด์ฆ
์ค๋๋ ์ํธ ์ฐ๊ฒฐ๋ ์ธ์์์ JavaScript๋ ๊ฐ๋จํ ์น ์ฌ์ดํธ๋ถํฐ ๋ณต์กํ ์ํฐํ๋ผ์ด์ฆ ์์คํ ์ ์ด๋ฅด๊ธฐ๊น์ง ๊ด๋ฒ์ํ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ง์ํฉ๋๋ค. ํ๋ก์ ํธ ๊ท๋ชจ์ ๋ณต์ก์ฑ์ด ์ปค์ง๊ณ ๊ฐ๋ฐ ํ์ด ์ ์ธ๊ณ์ ์ผ๋ก ์ ์ ๋ ๋ถ์ฐ๋จ์ ๋ฐ๋ผ ์ฝ๋ ํ์ง์ ์ ์งํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ค์ํฉ๋๋ค. ๊ณ ํ์ง JavaScript ์ฝ๋๋ฅผ ๋ณด์ฅํ๋ ๋ฐ ์์ด ์ค์ํ ์ธก๋ฉด์ ํจ๊ณผ์ ์ธ ๋ชจ๋ ์ ํจ์ฑ ๊ฒ์ฌ์ ๋๋ค. ์ด ๊ธฐ์ฌ์์๋ JavaScript ๋ชจ๋ ์ ํจ์ฑ ๊ฒ์ฌ์ ์ค์์ฑ์ ์ดํด๋ณด๊ณ ์ด๋ฅผ ๋ฌ์ฑํ๊ธฐ ์ํ ์ค์ฉ์ ์ธ ๊ธฐ์ ๊ณผ ๋๊ตฌ๋ฅผ ์ ๊ณตํฉ๋๋ค.
JavaScript ๋ชจ๋ ์ ํจ์ฑ ๊ฒ์ฌ๋ ๋ฌด์์ ๋๊น?
JavaScript ๋ชจ๋ ์ ํจ์ฑ ๊ฒ์ฌ๋ ์ฝ๋๋ฒ ์ด์ค ๋ด์ ๊ฐ๋ณ ๋ชจ๋์ด ํ๋ฆฝ๋ ์ฝ๋ฉ ํ์ค, ์ ํ ์ ์ฝ ์กฐ๊ฑด ๋ฐ ๋์ ๊ธฐ๋์น๋ฅผ ์ค์ํ๋์ง ํ์ธํ๋ ํ๋ก์ธ์ค์ ๋๋ค. ์ฌ๊ธฐ์๋ ์ ์ ๋ถ์ ๋ฐ ๋ฆฐํ ์์ ์ ํ ๊ฒ์ฌ ๋ฐ ๋ฐํ์ ํ ์คํ ์ ์ด๋ฅด๊ธฐ๊น์ง ๋ค์ํ ๊ธฐ์ ์ด ํฌํจ๋ฉ๋๋ค. ๋ชฉํ๋ ๊ฐ๋ฐ ์๋ช ์ฃผ๊ธฐ ์ด๊ธฐ์ ์ ์ฌ์ ์ธ ์ค๋ฅ, ๋ถ์ผ์น ๋ฐ ์ทจ์ฝ์ ์ ์๋ณํ์ฌ ํ๋ก๋์ ์์คํ ์ผ๋ก ์ ํ๋๋ ๊ฒ์ ๋ฐฉ์งํ๋ ๊ฒ์ ๋๋ค.
๋ชจ๋์ ๋ณธ์ง์ ์ผ๋ก ํน์ ๊ธฐ๋ฅ์ ์บก์ํํ๋ ์์ฒด ํฌํจ ์ฝ๋ ๋จ์์ ๋๋ค. ํจ๊ณผ์ ์ธ ๋ชจ๋ ์ ํจ์ฑ ๊ฒ์ฌ๋ ์ด๋ฌํ ๋จ์๊ฐ ์ ์ ์๋๊ณ ๋ ๋ฆฝ์ ์ด๋ฉฐ ์์ธก ๊ฐ๋ฅํ๊ณ ์์ ์ ์ธ ๋ฐฉ์์ผ๋ก ๋ค๋ฅธ ๋ชจ๋๊ณผ ์ํธ ์์ฉํ๋๋ก ๋ณด์ฅํฉ๋๋ค. ์ด๋ ์๋ก ๋ค๋ฅธ ํ์ด ์๋ก ๋ค๋ฅธ ๋ชจ๋์ ๋ด๋นํ ์ ์๋ ๋๊ท๋ชจ์ ์ ์ธ๊ณ์ ์ผ๋ก ๋ถ์ฐ๋ ํ๋ก์ ํธ์์ ํนํ ์ค์ํฉ๋๋ค.
๋ชจ๋ ์ ํจ์ฑ ๊ฒ์ฌ๊ฐ ์ค์ํ ์ด์ ๋ ๋ฌด์์ ๋๊น?
JavaScript ๋ชจ๋ ์ ํจ์ฑ ๊ฒ์ฌ์ ํฌ์ํ๋ฉด ์ํํธ์จ์ด ํ๋ก์ ํธ์ ์ ๋ฐ์ ์ธ ํ์ง๊ณผ ์ ์ง ๊ด๋ฆฌ ๊ฐ๋ฅ์ฑ์ ํฌ๊ฒ ๊ธฐ์ฌํ๋ ์๋ง์ ์ด์ ์ ์ป์ ์ ์์ต๋๋ค.
- ํฅ์๋ ์ฝ๋ ํ์ง: ์ ํจ์ฑ ๊ฒ์ฌ๋ ์ผ๋ฐ์ ์ธ ์ฝ๋ฉ ์ค๋ฅ, ์คํ์ผ ๋ถ์ผ์น ๋ฐ ์ ์ฌ์ ์ธ ๋ฒ๊ทธ๋ฅผ ์๋ณํ๊ณ ์ ๊ฑฐํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
- ํฅ์๋ ์์ ์ฑ: ๋ชจ๋์ด ์์๋๋ก ์๋ํ๋๋ก ๋ณด์ฅํจ์ผ๋ก์จ ์ ํจ์ฑ ๊ฒ์ฌ๋ ๋ฐํ์ ์ค๋ฅ ๋ฐ ์๊ธฐ์น ์์ ๋์์ ์ํ์ ์ค์ ๋๋ค.
- ํฅ์๋ ์ ์ง ๊ด๋ฆฌ์ฑ: ์ผ๊ด๋ ์ฝ๋ฉ ์คํ์ผ๊ณผ ์ ์ ์๋ ๋ชจ๋ ์ธํฐํ์ด์ค๋ฅผ ํตํด ์ฝ๋๋ฒ ์ด์ค๋ฅผ ๋ ์ฝ๊ฒ ์ดํด, ์์ ๋ฐ ํ์ฅํ ์ ์์ต๋๋ค.
- ๋๋ฒ๊น ์๊ฐ ๋จ์ถ: ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ํตํด ์ค๋ฅ๋ฅผ ์กฐ๊ธฐ์ ๊ฐ์งํ๋ฉด ๋ฌธ์ ๋ฅผ ๋๋ฒ๊น ํ๊ณ ํด๊ฒฐํ๋ ๋ฐ ์์๋๋ ์๊ฐ์ด ์ค์ด๋ญ๋๋ค.
- ๋ ๋์ ํ์ : ๊ณต์ ์ฝ๋ฉ ํ์ค ๋ฐ ์ ํจ์ฑ ๊ฒ์ฌ ๋๊ตฌ๋ ํนํ ์ ์ธ๊ณ์ ์ผ๋ก ๋ถ์ฐ๋ ํ์์ ๊ฐ๋ฐ์ ๊ฐ์ ์ผ๊ด์ฑ๊ณผ ํ์ ์ ์ด์งํฉ๋๋ค. ์ด๋ ์๋ก ๋ค๋ฅธ ํ๋ก๊ทธ๋๋ฐ ์คํ์ผ์ ๊ฐ์ง ์๋ก ๋ค๋ฅธ ๋ฌธํ์ ๋ฐฐ๊ฒฝ์ ๊ฐ๋ฐ์๊ฐ ๋์ผํ ์ฝ๋๋ฒ ์ด์ค์์ ํ์ ํ ๋ ํนํ ๊ด๋ จ์ด ์์ต๋๋ค.
- ํฅ์๋ ๋ณด์: ์ ํจ์ฑ ๊ฒ์ฌ๋ ๊ฐ๋ฐ ํ๋ก์ธ์ค ์ด๊ธฐ์ XSS(๊ต์ฐจ ์ฌ์ดํธ ์คํฌ๋ฆฝํ ) ๋๋ SQL ์ธ์ ์ ๊ณผ ๊ฐ์ ์ ์ฌ์ ์ธ ๋ณด์ ์ทจ์ฝ์ ์ ์๋ณํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค.
- ํฅ์๋ ์ฑ๋ฅ: ์ผ๋ถ ์ ํจ์ฑ ๊ฒ์ฌ ๊ธฐ์ ์ ์ฑ๋ฅ ๋ณ๋ชฉ ํ์์ ์๋ณํ๊ณ ์ต์ ํ๋ฅผ ์ ์ํ ์ ์์ต๋๋ค.
- ํ์ค ์ค์: ์ฝ๋๊ฐ ์ ๊ณ ๋ชจ๋ฒ ์ฌ๋ก ๋ฐ ์กฐ์ง ์ฝ๋ฉ ํ์ค์ ์ค์ํ๋์ง ํ์ธํฉ๋๋ค.
์ธ๋ ํ์ด ์ ์ ์๊ฑฐ๋ ํ๋ซํผ์ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๊ฐ๋ฐํ๊ณ ๋ ์ผ ํ์ด ๊ฒฐ์ ์ฒ๋ฆฌ ๋ชจ๋์ ๋ด๋นํ๋ ์๋๋ฆฌ์ค๋ฅผ ์๊ฐํด ๋ณด์ญ์์ค. ์ ์ ํ ๋ชจ๋ ์ ํจ์ฑ ๊ฒ์ฌ๊ฐ ์์ผ๋ฉด ๋ฐ์ดํฐ ํ์, ์ค๋ฅ ์ฒ๋ฆฌ ๋๋ ๋ณด์ ๊ดํ์ ๋ถ์ผ์น๋ก ์ธํด ํตํฉ ๋ฌธ์ , ๊ฒฐ์ ์คํจ ๋ฐ ์ฌ์ง์ด ๋ฐ์ดํฐ ์ ์ถ์ด ๋ฐ์ํ ์ ์์ต๋๋ค. ๋ชจ๋ ์ ํจ์ฑ ๊ฒ์ฌ๋ ๋ ํ ๋ชจ๋ ๊ณตํต ํ์ค ๋ฐ ๊ธฐ๋์น๋ฅผ ์ค์ํ๋๋ก ๋ณด์ฅํ๋ ๋ค๋ฆฌ ์ญํ ์ ํฉ๋๋ค.
JavaScript ๋ชจ๋ ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ์ํ ๊ธฐ์ ๋ฐ ๋๊ตฌ
ํจ๊ณผ์ ์ธ JavaScript ๋ชจ๋ ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ๊ตฌํํ๊ธฐ ์ํด ์ฌ๋ฌ ๊ฐ์ง ๊ธฐ์ ๊ณผ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๋ ์ ์ ๋ถ์, ์ ํ ๊ฒ์ฌ ๋ฐ ๋ฐํ์ ํ ์คํ ์ผ๋ก ๊ด๋ฒ์ํ๊ฒ ๋ถ๋ฅํ ์ ์์ต๋๋ค.
1. ์ ์ ๋ถ์ ๋ฐ ๋ฆฐํ
์ ์ ๋ถ์ ๋๊ตฌ๋ ์ฝ๋๋ฅผ ์คํํ์ง ์๊ณ ์์ค ์ฝ๋๋ฅผ ๊ฒ์ฌํ์ฌ ์ ์ฌ์ ์ธ ์ค๋ฅ, ์คํ์ผ ์๋ฐ ๋ฐ ์ฝ๋ ๋์๋ฅผ ์๋ณํฉ๋๋ค. ๋ฆฐํฐ๋ ์ฝ๋ฉ ์คํ์ผ ์ง์นจ์ ์ ์ฉํ๋๋ก ํน๋ณํ ์ค๊ณ๋ ์ ์ ๋ถ์ ๋๊ตฌ์ ํ ์ ํ์ ๋๋ค. ๋ค์ ๊ณผ ๊ฐ์ ๋ฌธ์ ๋ฅผ ์๋์ผ๋ก ๊ฐ์งํ๊ณ ์์ ํ ์ ์์ต๋๋ค.
- ๊ตฌ๋ฌธ ์ค๋ฅ
- ์ฌ์ฉ๋์ง ์๋ ๋ณ์
- ์ผ๊ด์ฑ ์๋ ๋ค์ฌ์ฐ๊ธฐ
- ๋๋ฝ๋ ์ธ๋ฏธ์ฝ๋ก
- ๋ ์ด์ ์ฌ์ฉ๋์ง ์๋ ๊ธฐ๋ฅ์ ์ฌ์ฉ
์ธ๊ธฐ ์๋ JavaScript ๋ฆฐํฐ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ESLint: ๊ด๋ฒ์ํ ๊ท์น ๋ฐ ํ๋ฌ๊ทธ์ธ์ ์ง์ํ๋ ๊ณ ๋๋ก ๊ตฌ์ฑ ๊ฐ๋ฅํ๊ณ ํ์ฅ ๊ฐ๋ฅํ ๋ฆฐํฐ์ ๋๋ค. ESLint๋ ์๋ง๋ ๊ฐ์ฅ ์ธ๊ธฐ ์๋ ๋ฆฐํฐ์ผ ๊ฒ์ด๋ฉฐ, ํน์ ์ฝ๋ฉ ๊ดํ ๋ฐ ๋ณด์ ๊ท์น์ ์ ์ฉํ๋ ๋ค์ํ ํ๋ฌ๊ทธ์ธ์ผ๋ก ์ฌ์ฉ์ ์ ์ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ํ๋ก์ ํธ์์ `eval()` ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ฌ์ ์ธ ์ฝ๋ ์ฝ์ ์ทจ์ฝ์ ์ ์ํํ๋ ๊ฒ์ ๊ธ์งํ๋ ํ๋ฌ๊ทธ์ธ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- JSHint: ์ ์ฌ์ ์ธ ์ค๋ฅ ๋ฐ ์๋ชป๋ ๊ดํ์ ์๋ณํ๋ ๋ฐ ์ค์ ์ ๋ ๋ณด๋ค ๋ ๋จ์ ์ธ ๋ฆฐํฐ์ ๋๋ค.
- JSLint: ์๊ฒฉํ๊ณ ํํํ์ง ์๋ ๊ท์น์ผ๋ก ์ ๋ช ํ ์๋ JavaScript ๋ฆฐํฐ์ ๋๋ค.
- Prettier: ๊ธฐ์ ์ ์ผ๋ก ์ฝ๋ ํฌ๋งทํฐ์ด์ง๋ง ๋ฆฐํฐ์ ํจ๊ป ์ฌ์ฉํ์ฌ ์ผ๊ด๋ ์ฝ๋ ์คํ์ผ์ ์๋์ผ๋ก ์ ์ฉํ ์ ์์ต๋๋ค. ์ ์ฒด ํ๋ก์ ํธ์์ ๊ท ์ผํ ์ฝ๋ ๋ชจ์์ ๋ณด์ฅํ์ฌ ์ ์๋ ์คํ์ผ ๊ฐ์ด๋๋ฅผ ์ค์ํ๋๋ก ์ฝ๋๋ฅผ ์๋์ผ๋ก ํฌ๋งทํ ์ ์์ต๋๋ค.
ESLint๋ฅผ ์ฌ์ฉํ๋ ์:
๋จผ์ ESLint ๋ฐ ๊ตฌ์ฑ ํ์ผ์ ์ค์นํฉ๋๋ค.
npm install eslint --save-dev
npm install eslint-config-standard --save-dev // ๋๋ ๋ค๋ฅธ ๊ตฌ์ฑ
๊ทธ๋ฐ ๋ค์ ๋ค์ ๊ตฌ์ฑ์ผ๋ก ํ๋ก์ ํธ ๋ฃจํธ์ `.eslintrc.js` ํ์ผ์ ๋ง๋ญ๋๋ค(`standard` ๊ตฌ์ฑ ์ฌ์ฉ).
module.exports = {
"extends": "standard",
"rules": {
// ์ฌ๊ธฐ์ ๊ท์น ์ถ๊ฐ ๋๋ ์ฌ์ ์
}
};
๋ง์ง๋ง์ผ๋ก JavaScript ํ์ผ์์ ESLint๋ฅผ ์คํํฉ๋๋ค.
npx eslint your-module.js
ESLint๋ ๊ตฌ์ฑ๋ ๊ท์น์ ์๋ฐ ์ฌํญ์ ๋ณด๊ณ ํ์ฌ ์ ์ฌ์ ์ธ ๋ฌธ์ ๋ฅผ ์๋ณํ๊ณ ์์ ํ๋ ๋ฐ ๋์์ ์ค๋๋ค. ์ ์ธ๊ณ์ ์ผ๋ก ๋ถ์ฐ๋ ํ์์ ๊ณต์ ESLint ๊ตฌ์ฑ์ ์ฌ์ฉํ๋ฉด ์์น๋ ํ๋ก๊ทธ๋๋ฐ ๋ฐฐ๊ฒฝ์ ๊ด๊ณ์์ด ๋ชจ๋ ์ฌ๋์ด ๋์ผํ ์ฝ๋ฉ ํ์ค์ ์ค์ํ ์ ์์ต๋๋ค.
2. ํ์ ๊ฒ์ฌ
JavaScript๋ ๋์ ์ผ๋ก ์ ํ์ด ์ง์ ๋ ์ธ์ด์ด๋ฏ๋ก ๋ณ์์ ์ ํ์ ๋ฐํ์๊น์ง ์ ์ ์์ต๋๋ค. ์ด๋ก ์ธํด ์๊ธฐ์น ์์ ์ค๋ฅ ๋ฐ ๋ฐํ์ ์์ธ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ์ ํ ๊ฒ์ฌ ๋๊ตฌ๋ JavaScript์ ์ ์ ์ ํ ์ง์ ์ ์ถ๊ฐํ์ฌ ๋ฐํ์์ด ์๋ ๊ฐ๋ฐ ์ค์ ์ ํ ์ค๋ฅ๋ฅผ catchํ ์ ์๋๋ก ํฉ๋๋ค.
JavaScript์ ๋ํ ๊ฐ์ฅ ์ธ๊ธฐ ์๋ ์ ํ ๊ฒ์ฌ ๋๊ตฌ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- TypeScript: ์ ์ ์ ํ, ํด๋์ค ๋ฐ ์ธํฐํ์ด์ค๋ฅผ ์ถ๊ฐํ๋ JavaScript์ ์์ ์งํฉ์ ๋๋ค. TypeScript๋ ๋ฐ์ด๋ ๋๊ตฌ ์ง์์ ์ ๊ณตํ๋ฉฐ ๊ธฐ์กด JavaScript ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ ํ๋ ์์ํฌ์ ์ํํ๊ฒ ํตํฉ๋ฉ๋๋ค. TypeScript๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ๋ฐ์๊ฐ ๋ชจ๋์ ๋ํ ์ธํฐํ์ด์ค๋ฅผ ์ ์ํ์ฌ ์ ๋ ฅ ๋ฐ ์ถ๋ ฅ ์ ํ์ด ์์ ๊ฐ๊ณผ ์ผ์นํ๋์ง ํ์ธํ ์ ์์ต๋๋ค.
๋ค๋ฅธ ์ต์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- JSDoc: ์ ์ฒด ์ ํ ๊ฒ์ฌ๊ธฐ๋ ์๋์ง๋ง JSDoc์ ์ฌ์ฉํ๋ฉด ์ฃผ์์ ์ฌ์ฉํ์ฌ JavaScript ์ฝ๋์ ์ ํ ์ฃผ์์ ์ถ๊ฐํ ์ ์์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ TypeScript ์ปดํ์ผ๋ฌ์ ๊ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฌํ ์ฃผ์์ผ๋ก ์ ํ ๊ฒ์ฌ๋ฅผ ์ํํ ์ ์์ต๋๋ค.
- Flow: Facebook์์ ๊ฐ๋ฐํ ์ ์ ์ ํ ๊ฒ์ฌ๊ธฐ์ ๋๋ค. (ํ์ฌ๋ ์ธ๊ธฐ๊ฐ ๋จ์ด์ก์ง๋ง ์ผ๋ถ ํ๋ก์ ํธ์์๋ ์ฌ์ ํ ์คํ ๊ฐ๋ฅ)
TypeScript๋ฅผ ์ฌ์ฉํ๋ ์:
๋จผ์ TypeScript๋ฅผ ์ค์นํฉ๋๋ค.
npm install typescript --save-dev
๊ทธ๋ฐ ๋ค์ ์ํ๋ ์ปดํ์ผ๋ฌ ์ต์ ์ผ๋ก ํ๋ก์ ํธ ๋ฃจํธ์ `tsconfig.json` ํ์ผ์ ๋ง๋ญ๋๋ค.
์ด์ TypeScript ์ฝ๋(`.ts` ํ์ฅ์ ์ฌ์ฉ)๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
interface User {
id: number;
name: string;
}
function greetUser(user: User): string {
return `Hello, ${user.name}!`;
}
const validUser: User = { id: 1, name: "Alice" };
const greeting = greetUser(validUser); // ์ ์๋ํฉ๋๋ค.
// const invalidUser = { id: "1", name: 123 }; // TypeScript๋ ์ด๋ฅผ ์ค๋ฅ๋ก ํ์ํฉ๋๋ค.
console.log(greeting);
๋ง์ง๋ง์ผ๋ก TypeScript ์ฝ๋๋ฅผ JavaScript๋ก ์ปดํ์ผํฉ๋๋ค.
npx tsc your-module.ts
TypeScript๋ ์ปดํ์ผ ์ค์ ์ ํ ์ค๋ฅ๋ฅผ catchํ์ฌ ๋ฐํ์ ๋ฌธ์ ๊ฐ ๋๋ ๊ฒ์ ๋ฐฉ์งํฉ๋๋ค. ์๋ฅผ ๋ค์ด ํจ์๊ฐ ์ธ์๋ก ์ซ์๋ฅผ ์์ํ์ง๋ง ๋ฌธ์์ด์ ๋ฐ๋ ๊ฒฝ์ฐ TypeScript๋ ์ด๋ฅผ ์ค๋ฅ๋ก ํ์ํฉ๋๋ค. ์ด๋ฌํ ์ฌ์ ์๋ฐฉ์ ์ ํ ๊ฒ์ฌ๋ ์ฝ๋ ๊ฒฌ๊ณ ์ฑ์ ๊ฐ์ ํ๊ณ ์๊ธฐ์น ์์ ๋์์ ๊ฐ๋ฅ์ฑ์ ์ค์ ๋๋ค. ์๋ก ๋ค๋ฅธ ๊ฐ๋ฐ์๊ฐ ๋ฐ์ดํฐ ์ ํ์ ๋ํด ์๋ก ๋ค๋ฅธ ์ดํด๋ฅผ ๊ฐ์ง ์ ์๋ ๊ธ๋ก๋ฒ ํ๋ก์ ํธ์์ TypeScript๋ ์ผ๊ด๋ ์ ํ ์์คํ ์ ์ ์ฉํ์ฌ ํตํฉ ๋ฌธ์ ๋ฅผ ๋ฐฉ์งํฉ๋๋ค.
TypeScript๋ ๊ฐ๋ ฅํ ์ ํ ์ง์ ์ ์ ์ฉํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด ์ ๋ฝ์์ ๊ฐ๋ฐ๋ ๋ชจ๋์ด `YYYY-MM-DD` ํ์์ผ๋ก ๋ ์ง๋ฅผ ๋ฐํํ๊ณ ๋ถ๋ฏธ์์ ๊ฐ๋ฐ๋ ๋ชจ๋์ด `MM-DD-YYYY` ํ์์ผ๋ก ๋ ์ง๋ฅผ ์์ํ๋ ๊ฒฝ์ฐ ์ธํฐํ์ด์ค๊ฐ ๋ช ํํ๊ฒ ์ ์๋๊ณ ์ ํ ๊ฒ์ฌ๊ฐ ์ํ๋๋ฉด TypeScript๋ ์ ํ ๋ถ์ผ์น๋ฅผ ํ๋๊ทธํฉ๋๋ค.
3. ๋ฐํ์ ํ ์คํ
๋ฐํ์ ํ ์คํ ์๋ ์ฝ๋๋ฅผ ์คํํ๊ณ ์์๋๋ก ์๋ํ๋์ง ํ์ธํ๋ ์์ ์ด ํฌํจ๋ฉ๋๋ค. ์ฌ๊ธฐ์๋ ๋จ์ ํ ์คํ , ํตํฉ ํ ์คํ ๋ฐ ์๋ ํฌ ์๋ ํ ์คํ ์ด ํฌํจ๋ฉ๋๋ค.
- ๋จ์ ํ ์คํ : ๊ฐ๋ณ ๋ชจ๋ ๋๋ ํจ์๋ฅผ ๊ฒฉ๋ฆฌ๋ ์ํ์์ ํ ์คํธํฉ๋๋ค. ๋จ์ ํ ์คํธ๋ ๊ฐ๋ฅํ ๋ชจ๋ ์ ๋ ฅ ๋ฐ ์์ง ์ผ์ด์ค๋ฅผ ๋ค๋ฃจ์ด์ผ ํฉ๋๋ค.
- ํตํฉ ํ ์คํ : ์๋ก ๋ค๋ฅธ ๋ชจ๋ ๋๋ ๊ตฌ์ฑ ์์ ๊ฐ์ ์ํธ ์์ฉ์ ํ ์คํธํฉ๋๋ค.
- ์๋ ํฌ ์๋ ํ ์คํ : ์ฌ์ฉ์ ์ธํฐํ์ด์ค์์ ๋ฐฑ์๋ ์๋น์ค๊น์ง ์ ์ฒด ์ ํ๋ฆฌ์ผ์ด์ ํ๋ฆ์ ํ ์คํธํฉ๋๋ค.
์ธ๊ธฐ ์๋ JavaScript ํ ์คํ ํ๋ ์์ํฌ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- Jest: Facebook์์ ๊ฐ๋ฐํ ํฌ๊ด์ ์ธ ํ ์คํ ํ๋ ์์ํฌ์ ๋๋ค. Jest๋ ์ฌ์ฉ ์ฉ์ด์ฑ, ๋ด์ฅ๋ ๋ชจ์ ๊ธฐ๋ฅ ๋ฐ ๋ฐ์ด๋ ์ฑ๋ฅ์ผ๋ก ์ ๋ช ํฉ๋๋ค.
- Mocha: ์ด์ค์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ ๋ชจ์ ํ๋ ์์ํฌ๋ฅผ ์ ํํ ์ ์๋ ์ ์ฐํ๊ณ ํ์ฅ ๊ฐ๋ฅํ ํ ์คํ ํ๋ ์์ํฌ์ ๋๋ค.
- Jasmine: BDD(ํ๋ ์ค์ฌ ๊ฐ๋ฐ) ํ ์คํ ํ๋ ์์ํฌ์ ๋๋ค.
- Cypress: ์ต์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ฉ์ผ๋ก ์ค๊ณ๋ ์๋ ํฌ ์๋ ํ ์คํ ํ๋ ์์ํฌ์ ๋๋ค.
Jest๋ฅผ ์ฌ์ฉํ๋ ์:
๋จผ์ Jest๋ฅผ ์ค์นํฉ๋๋ค.
npm install jest --save-dev
๊ทธ๋ฐ ๋ค์ ๋ค์ ๋ด์ฉ์ผ๋ก ํ ์คํธ ํ์ผ(์: `your-module.test.js`)์ ๋ง๋ญ๋๋ค.
// your-module.js
export function add(a, b) {
return a + b;
}
// your-module.test.js
import { add } from './your-module';
descrive('add', () => {
it('๋ ์ซ์๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ๋ํด์ผ ํฉ๋๋ค.', () => {
expect(add(2, 3)).toBe(5);
});
it('์์๋ฅผ ์ฒ๋ฆฌํด์ผ ํฉ๋๋ค.', () => {
expect(add(-1, 5)).toBe(4);
});
});
๋ง์ง๋ง์ผ๋ก ํ ์คํธ๋ฅผ ์คํํฉ๋๋ค.
npm test
Jest๋ ํ ์คํธ๋ฅผ ์คํํ๊ณ ์คํจ๋ฅผ ๋ณด๊ณ ํฉ๋๋ค. ๋จ์ ํ ์คํธ๋ ๊ฐ ๋ชจ๋์ด ๊ฒฉ๋ฆฌ๋ ์ํ์์ ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํ๋์ง ํ์ธํฉ๋๋ค. ์๋ฅผ ๋ค์ด ์ฌ์ฉ์์ ๋ก์ผ์ผ์ ๊ธฐ๋ฐ์ผ๋ก ๋ ์ง ํ์์ ์ง์ ํ๋ ๋ชจ๋์ ์๊ฐํด ๋ณด์ญ์์ค. ๋จ์ ํ ์คํธ๋ ๋ชจ๋์ด ์๋ก ๋ค๋ฅธ ๋ก์ผ์ผ(์: ๋ฏธ๊ตญ, ์๊ตญ, ์ผ๋ณธ)์ ๋ํด ๋ ์ง ํ์์ ์ฌ๋ฐ๋ฅด๊ฒ ์ง์ ํ๋์ง ํ์ธํฉ๋๋ค. ์ ์ญ ์ปจํ ์คํธ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์๋ก ๋ค๋ฅธ ์ง์ญ์ ์ฌ์ฉ์์ ๋ํด ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํ๋๋ก ๋ณด์ฅํ๋ ค๋ฉด ์ฒ ์ ํ ๋จ์ ํ ์คํธ๊ฐ ํจ์ฌ ๋ ์ค์ํด์ง๋๋ค.
4. ์ฝ๋ ๋ฆฌ๋ทฐ
์ฝ๋ ๋ฆฌ๋ทฐ๋ ์ํํธ์จ์ด ๊ฐ๋ฐ ํ๋ก์ธ์ค์ ์ค์ํ ๋ถ๋ถ์ ๋๋ค. ๋๋ฃ๊ฐ ์ฝ๋๋ฅผ ๊ฒํ ํ๋ฉด ์ ์ฌ์ ์ธ ์ค๋ฅ๋ฅผ catchํ๊ณ ์ฝ๋ฉ ํ์ค์ ์ค์ํ๋์ง ํ์ธํ๋ ์ถ๊ฐ ๊ฒํ ๊ณ์ธต์ด ์ ๊ณต๋ฉ๋๋ค. ์ ์ธ๊ณ ํ์์ ์ฝ๋ ๋ฆฌ๋ทฐ๋ ๊ฐ๋ฐ์๊ฐ ์๋ก ๋ฐฐ์ฐ๊ณ ๋ค๋ฅธ ๊ด์ ์ ์ดํดํ๋ ๋ฐ ๋์์ด ๋๋ ์ง์ ๊ณต์ ๋ฉ์ปค๋์ฆ์ผ๋ก๋ ์ฌ์ฉ๋ ์ ์์ต๋๋ค.
์ฝ๋ ๋ฆฌ๋ทฐ์ ์ด์
- ํฅ์๋ ์ฝ๋ ํ์ง
- ๋ฒ๊ทธ ์กฐ๊ธฐ ๊ฐ์ง
- ํ ๊ตฌ์ฑ์ ๊ฐ์ ์ง์ ๊ณต์
- ์ฝ๋ฉ ํ์ค ์ํ
- ์ ์ฌ์ ์ธ ๋ณด์ ์ทจ์ฝ์ ์๋ณ
์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ์ํํ ๋ ๋ค์ ์ฌํญ์ ๊ณ ๋ คํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
- ์ผ๊ด์ฑ: ์ฝ๋๊ฐ ์ ์๋ ์ฝ๋ฉ ํ์ค ๋ฐ ์คํ์ผ ์ง์นจ์ ์ค์ํ๋์ง ํ์ธํฉ๋๋ค.
- ์ ํ์ฑ: ์ฝ๋๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํ๊ณ ์์ง ์ผ์ด์ค๋ฅผ ์ ์ ํ๊ฒ ์ฒ๋ฆฌํ๋์ง ํ์ธํฉ๋๋ค.
- ๋ณด์: XSS ๋๋ SQL ์ธ์ ์ ๊ณผ ๊ฐ์ ์ ์ฌ์ ์ธ ๋ณด์ ์ทจ์ฝ์ ์ ์ฐพ์ต๋๋ค.
- ์ฑ๋ฅ: ์ ์ฌ์ ์ธ ์ฑ๋ฅ ๋ณ๋ชฉ ํ์์ ์๋ณํฉ๋๋ค.
- ์ ์ง ๊ด๋ฆฌ์ฑ: ์ฝ๋๋ฅผ ์ดํด, ์์ ๋ฐ ํ์ฅํ๊ธฐ ์ฌ์ด์ง ํ์ธํฉ๋๋ค.
- ๊ตญ์ ํ ๋ฐ ํ์งํ(i18n/l10n): ๊ธ๋ก๋ฒ ํ๋ก์ ํธ์ ๊ฒฝ์ฐ ์๋ก ๋ค๋ฅธ ๋ก์ผ์ผ, ํตํ, ๋ ์ง ํ์ ๋ฐ ๋ฌธ์ ์ธ์ฝ๋ฉ์ ์ ์ ํ ์ฒ๋ฆฌ๋ฅผ ๊ฒํ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด ์ ํ๋ฆฌ์ผ์ด์ ์ด ์๋์ด ๋๋ ํ๋ธ๋ฆฌ์ด์ ๊ฐ์ ์ค๋ฅธ์ชฝ์์ ์ผ์ชฝ์ผ๋ก ์ฐ๋ ์ธ์ด๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ํ์ํ๋์ง ํ์ธํฉ๋๋ค.
JavaScript ๋ชจ๋ ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ์ํ ๋ชจ๋ฒ ์ฌ๋ก
JavaScript ๋ชจ๋ ์ ํจ์ฑ ๊ฒ์ฌ์ ์ด์ ์ ๊ทน๋ํํ๋ ค๋ฉด ๋ค์ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๋ฐ๋ฅด์ญ์์ค.
- ์ฝ๋ฉ ํ์ค ์ค์ : ์ ์ฒด ํ๋ก์ ํธ์ ๋ํ ๋ช ํํ๊ณ ์ผ๊ด๋ ์ฝ๋ฉ ํ์ค์ ์ ์ํฉ๋๋ค. ์ฌ๊ธฐ์๋ ๋ช ๋ช ๊ท์น, ๋ค์ฌ์ฐ๊ธฐ ์คํ์ผ, ์ฃผ์ ์ง์นจ ๋ฐ ์ค๋ฅ ์ฒ๋ฆฌ ๋ฐฉ์์ด ํฌํจ๋ฉ๋๋ค.
- ์ ํจ์ฑ ๊ฒ์ฌ ์๋ํ: ์ฌ์ ์ปค๋ฐ ํํฌ ๋๋ CI(์ง์์ ํตํฉ) ํ์ดํ๋ผ์ธ์ ์ฌ์ฉํ์ฌ ์ ํจ์ฑ ๊ฒ์ฌ ๋๊ตฌ๋ฅผ ๊ฐ๋ฐ ์ํฌํ๋ก์ ํตํฉํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๋ชจ๋ ์ฝ๋ ๋ณ๊ฒฝ ์ฌํญ์ ๋ํด ์ ํจ์ฑ ๊ฒ์ฌ๊ฐ ์๋์ผ๋ก ์ํ๋ฉ๋๋ค.
- ๊ธฐ์ ์กฐํฉ ์ฌ์ฉ: ํฌ๊ด์ ์ธ ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ์ํด ์ ์ ๋ถ์, ์ ํ ๊ฒ์ฌ ๋ฐ ๋ฐํ์ ํ ์คํ ์ ์กฐํฉ์ ์ฌ์ฉํฉ๋๋ค.
- ์๋ฏธ ์๋ ํ ์คํธ ์์ฑ: ๋ชจ๋ ๊ธฐ๋ฅ์ ๋ชจ๋ ์ค์ํ ์ธก๋ฉด์ ๋ค๋ฃจ๋ ๋ช ํํ๊ณ ๊ฐ๊ฒฐํ๋ฉฐ ์ ๋ฌธ์ํ๋ ํ ์คํธ๋ฅผ ์์ฑํฉ๋๋ค.
- ๋ชจ๋์ ์๊ณ ์ง์ค์ ์ผ๋ก ์ ์ง: ์์ ๋ชจ๋์ ์ดํด, ํ ์คํธ ๋ฐ ์ ํจ์ฑ ๊ฒ์ฌ๊ฐ ๋ ์ฝ์ต๋๋ค.
- ๋ชจ๋ ์ธํฐํ์ด์ค ๋ฌธ์ํ: ๊ฐ ๋ชจ๋์ ์ ๋ ฅ, ์ถ๋ ฅ ๋ฐ ๋ถ์์ฉ์ ๋ช ํํ๊ฒ ๋ฌธ์ํํฉ๋๋ค.
- ์๋งจํฑ ๋ฒ์ ๊ด๋ฆฌ ์ฌ์ฉ: ์๋งจํฑ ๋ฒ์ ๊ด๋ฆฌ(SemVer)๋ฅผ ๋ฐ๋ผ ๋ชจ๋ ์ข ์์ฑ์ ๊ด๋ฆฌํ๊ณ ํธํ์ฑ์ ๋ณด์ฅํฉ๋๋ค.
- ์ข ์์ฑ ์ ๊ธฐ์ ์ผ๋ก ์ ๋ฐ์ดํธ: ๋ฒ๊ทธ ์์ , ๋ณด์ ํจ์น ๋ฐ ์ฑ๋ฅ ๊ฐ์ ์ ์ด์ ์ ์ป์ผ๋ ค๋ฉด ์ข ์์ฑ์ ์ต์ ์ํ๋ก ์ ์งํฉ๋๋ค.
- ๊ตญ์ ํ(i18n)๋ฅผ ์ด๊ธฐ์ ๊ณ ๋ ค: ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ฌ๋ฌ ์ธ์ด ๋ฐ ์ง์ญ์ ์ง์ํด์ผ ํ๋ ๊ฒฝ์ฐ ๊ฐ๋ฐ ํ๋ก์ธ์ค ์์๋ถํฐ i18n ๊ณ ๋ ค ์ฌํญ์ ํตํฉํฉ๋๋ค.
๊ธ๋ก๋ฒ ์ปจํ ์คํธ์์์ ๋ชจ๋ ์ ํจ์ฑ ๊ฒ์ฌ
๊ธ๋ก๋ฒ ๊ณ ๊ฐ์ ์ํ JavaScript ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ ๋๋ ๋ค์ํ ์ง์ญ ๋ฐ ๋ฌธํ์ ํน์ ์๊ตฌ ์ฌํญ์ ๊ณ ๋ คํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์ฌ๊ธฐ์๋ ๋ค์์ด ํฌํจ๋ฉ๋๋ค.
- ๊ตญ์ ํ(i18n): ์์ง๋์ด๋ง ๋ณ๊ฒฝ ์์ด ๋ค์ํ ์ธ์ด, ์ง์ญ ๋ฐ ๋ฌธํ์ ๋ง๊ฒ ์กฐ์ ํ ์ ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ค๊ณํ๊ณ ๊ฐ๋ฐํฉ๋๋ค. ์ฌ๊ธฐ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ํต์ฌ ๋ ผ๋ฆฌ๋ฅผ ์ธ์ด๋ณ ๋ฐ ์ง์ญ๋ณ ์์์ ๋ถ๋ฆฌํ๋ ๊ฒ์ด ํฌํจ๋ฉ๋๋ค.
- ํ์งํ(l10n): ํ ์คํธ ๋ฒ์ญ, ๋ ์ง ๋ฐ ์ซ์ ์์ ์ง์ , ๋ก์ปฌ ๊ท์น์ ๋ง๊ฒ ์ฌ์ฉ์ ์ธํฐํ์ด์ค ์กฐ์ ์ ํตํด ๊ตญ์ ํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ํน์ ๋ก์ผ์ผ์ ์ ์ฉํฉ๋๋ค.
- ์๋ก ๋ค๋ฅธ ์๊ฐ๋ ์ฒ๋ฆฌ: ๋ ์ง์ ์๊ฐ์ด ์๋ก ๋ค๋ฅธ ์๊ฐ๋์ ์ฌ์ฉ์์๊ฒ ์ฌ๋ฐ๋ฅด๊ฒ ํ์๋๋๋ก ๋ณด์ฅํฉ๋๋ค.
- ์ฌ๋ฌ ํตํ ์ง์: ์๋ก ๋ค๋ฅธ ํตํ ํ์ ๋ฐ ํ์จ์ ์ฒ๋ฆฌํฉ๋๋ค.
- ์๋ก ๋ค๋ฅธ ๋ฌธํ์ ๊ท๋ฒ์ ์ ์: ์์ ์ ํธ๋, ์ด๋ฏธ์ง ๋ฐ ์ปค๋ฎค๋์ผ์ด์ ์คํ์ผ๊ณผ ๊ฐ์ ์์ญ์์ ๋ฌธํ์ ์ฐจ์ด๋ฅผ ๊ณ ๋ คํฉ๋๋ค.
๋ชจ๋ ์ ํจ์ฑ ๊ฒ์ฌ๋ ์ด๋ฌํ ๊ธ๋ก๋ฒ ๊ณ ๋ ค ์ฌํญ์ด ์ ์ ํ๊ฒ ์ฒ๋ฆฌ๋๋๋ก ํ๋ ๋ฐ ์ค์ํ ์ญํ ์ ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ค์์ ํ์ธํ ์ ์์ต๋๋ค.
- ํ ์คํธ ๋ฌธ์์ด์ด ๋ฒ์ญ์ ์ํด ์ ์ ํ๊ฒ ์ธ๋ถํ๋์์ต๋๋ค.
- ๋ ์ง์ ์ซ์๊ฐ ์ฌ์ฉ์์ ๋ก์ผ์ผ์ ๋ฐ๋ผ ํ์์ด ์ง์ ๋ฉ๋๋ค.
- ์ ํ๋ฆฌ์ผ์ด์ ์ด ์๋ก ๋ค๋ฅธ ๋ฌธ์ ์ธ์ฝ๋ฉ์ ์ฌ๋ฐ๋ฅด๊ฒ ์ฒ๋ฆฌํฉ๋๋ค.
- ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ ์๋ก ๋ค๋ฅธ ํ๋ฉด ํฌ๊ธฐ ๋ฐ ํด์๋์ ์ ์ํ ์ ์์ต๋๋ค.
๊ฒฐ๋ก
JavaScript ๋ชจ๋ ์ ํจ์ฑ ๊ฒ์ฌ๋ ํนํ ์ ์ธ๊ณ์ ์ผ๋ก ๋ถ์ฐ๋ ํ๋ก์ ํธ์์ ์ฝ๋ ํ์ง, ์์ ์ฑ ๋ฐ ์ ์ง ๊ด๋ฆฌ ๊ฐ๋ฅ์ฑ์ ๋ณด์ฅํ๋ ๋ฐ ํ์์ ์ธ ๋ฐฉ๋ฒ์ ๋๋ค. ์ ์ ๋ถ์, ์ ํ ๊ฒ์ฌ ๋ฐ ๋ฐํ์ ํ ์คํ ์ ์กฐํฉ์ ์ฌ์ฉํ์ฌ ๊ฐ๋ฐ์๋ ๊ฐ๋ฐ ์๋ช ์ฃผ๊ธฐ ์ด๊ธฐ์ ์ ์ฌ์ ์ธ ์ค๋ฅ๋ฅผ ์๋ณํ๊ณ ์ ๊ฑฐํ์ฌ ๋๋ฒ๊น ์๊ฐ์ ์ค์ด๊ณ ์ํํธ์จ์ด์ ์ ๋ฐ์ ์ธ ํ์ง์ ํฅ์์ํฌ ์ ์์ต๋๋ค. ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ค์ํ๊ณ ๊ธ๋ก๋ฒ ๊ณ ๋ ค ์ฌํญ์ ๊ณ ๋ คํ๋ฉด ๋ชจ๋ ์ ํจ์ฑ ๊ฒ์ฌ์ ํจ๊ณผ๋ฅผ ๋์ฑ ํฅ์์์ผ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ค์ํ๊ณ ๊ตญ์ ์ ์ธ ๊ณ ๊ฐ์๊ฒ ์ ํฉํ๋๋ก ๋ณด์ฅํ ์ ์์ต๋๋ค. ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ๊ฐ๋ฐ ์ํฌํ๋ก์ ํตํฉํจ์ผ๋ก์จ ํ์ ์ ์ธ๊ณ ์ฌ์ฉ์์ ์๊ตฌ๋ฅผ ์ถฉ์กฑํ๋ ๋ณด๋ค ๊ฐ๋ ฅํ๊ณ ์์ ํ๋ฉฐ ์ ์ง ๊ด๋ฆฌ ๊ฐ๋ฅํ JavaScript ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค ์ ์์ต๋๋ค.
์ ์ ๋ ์ํธ ์ฐ๊ฒฐ๋๋ ๊ธ๋ก๋ฒ ๊ธฐ์ ํ๊ฒฝ์์ JavaScript ๋ชจ๋ ์ ํจ์ฑ ๊ฒ์ฌ๋ ๋ ์ด์ ์์ผ๋ฉด ์ข์ ๊ฒ์ด ์๋๋ผ ๊ณ ํ์ง์ ์์ ์ ์ด๊ณ ํ์ฅ ๊ฐ๋ฅํ ์ํํธ์จ์ด๋ฅผ ๊ตฌ์ถํ๋ ๋ฐ ํ์์ ์ ๋๋ค. ์ด๋ฌํ ๊ธฐ์ ๊ณผ ๋๊ตฌ๋ฅผ ์์ฉํ๋ ๊ฒ์ ์ ์ธ๊ณ ๊ณ ๊ฐ์๊ฒ ๋ฐ์ด๋ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ๊ธฐ ์ํ ์ค์ํ ๋จ๊ณ์ ๋๋ค.