# javascript-postbox <table> <tr> <td align="center"> <a href="https://github.com/mansaout"> <img src="https://avatars.githubusercontent.com/u/41741221?v=4" width="100px;" alt="Yellow"/><br /> <sub><b>Yellow</b><br></sub> </a> </td> <td align="center"> <a href="https://github.com/healtheloper"> <img src="https://avatars.githubusercontent.com/u/58503584?v=4" width="100px;" alt="Park"/><br /> <sub><b>Park</b><br></sub> </a> </td> </tr> </table> <br> ## 🧐 μ–΄λ–€ μƒκ°μœΌλ‘œ λ―Έμ…˜μ‹œμž‘? - ν•œκΈ€μ½”λ”© - `μ™œ?` : λ“œλΌμ΄λ²„κ°€ μ½”λ“œλ₯Ό μ„€λͺ…ν•  λ•Œ ν•œκΈ€λ‘œ μŠ€μΌˆλ ˆν†€ μ½”λ“œλ₯Ό μž‘μ„±ν•˜λ©΄μ„œ 보여주닀가 였히렀 ν•œκΈ€ μ½”λ“œκ°€ 더 이해가 μž˜λ˜λŠ” λŠλ‚Œμ„ λ°›μ•„μ„œ μ‹€μ œλ‘œ <a href="https://youtu.be/edWbHp_k_9Y?t=865">ν•œκΈ€λ‘œ 코딩을 ν•˜λŠ” 사둀</a> 도 μžˆλ‹€κ³  λ“€μ–΄μ„œ ν•œλ²ˆ 해보면 μž¬λ°Œκ² λ‹€λΌλŠ” μƒκ°μœΌλ‘œ ν•œκΈ€μ½”λ”©μ„ μ‹œμž‘ ν–ˆμŠ΅λ‹ˆλ‹€. - 쀑간에 λ„€λΉ„κ²Œμ΄ν„°μ˜ 둜직이 이해가 μ•ˆλœλ‹€λ©΄ λ©ˆμΆ”κ³  μƒκ°ν•˜κΈ° - 두 μ‚¬λžŒμ΄ μ™„λ²½νžˆ μ½”λ“œμ— λŒ€ν•΄μ„œ 이해λ₯Ό ν•΄μ•Ό ν”Όλ“œλ°±μ΄ μ›ν™œνžˆ μ΄λ£¨μ–΄μ§ˆ 수 μžˆλ‹€λŠ” μƒκ°μœΌλ‘œ μ§„ν–‰ν–ˆμŠ΅λ‹ˆλ‹€. <br> ## πŸ“• λ―Έμ…˜ 별 초기 섀계 ### λ―Έμ…˜ 1 - html λΌˆλŒ€ λ¨Όμ € λ§Œλ“€κΈ° - λ§ˆμ„μ§€λ„, λ²„νŠΌ, λ§ˆμ„ 정보(총 ~개의 λ§ˆμ„μž…λ‹ˆλ‹€) - λ§ˆμ„ class λ§Œλ“€κΈ° - 속성: Width, Height, Positions, box:object - λ©”μ„œλ“œ: ν¬ν•¨λ˜λŠ” λ§ˆμ„ λ§Œλ“€κΈ° - λžœλ€ν•œ λ²”μœ„ μ§€μ •ν•΄μ£ΌλŠ” ν•¨μˆ˜ λ§Œλ“€κΈ° - validation ν•¨μˆ˜(λ‹€λ₯Έ λ§ˆμ„κ³Ό κ²ΉμΉ˜μ§€ μ•ŠλŠ”μ§€) λ§Œλ“€κΈ° ### κ΅¬ν˜„ν•˜λ©΄μ„œ 바뀐점 - λ§ˆμ„ class 속성 - κ°€λ‘œκΈΈμ΄, μ„Έλ‘œκΈΈμ΄, μ’Œν‘œ(->μƒλŒ€μ’Œν‘œ), μš°μ²΄ν†΅:object(`new μš°μ²΄ν†΅`) - οΉ’μš°μ²΄ν†΅ν¬κΈ°, λ§ˆμ„μ΄λ¦„, μžμ‹λ§ˆμ„ - μš°μ²΄ν†΅ν¬κΈ° λ˜ν•œ 랜덀으둜 λ§Œλ“€μ–΄ μ Έμ•Ό ν•΄μ„œ μ„œλ²„μ—μ„œ 데이터λ₯Ό λ°›λŠ” ꡬ쑰λ₯Ό μƒκ°ν–ˆμ„ λ•Œ μš°μ²΄ν†΅ 크기 λ˜ν•œ ν¬ν•¨λ˜μ–΄μ•Ό ν•œλ‹€κ³  생각이 듦 - λ§ˆμ„μ΄λ¦„μ΄ ν¬ν•¨λ˜μ–΄μ•Ό ν•œλ‹€λŠ” 것을 늦게 확인함... - λ§ˆμ„μ΄ μžμ‹λ§ˆμ„μ˜ 정보λ₯Ό κ°–λŠ”λ‹€κ³  ν•  λ•Œ, λ°°μ—΄ ν˜•νƒœλ‘œ κ°–κ³  λ§ˆμ„κ³Ό λ™μΌν•œ 속성을 κ°–κ²Œ 될 것이라고 μƒκ°ν•΄μ„œ μ„œλ²„μ—μ„œ μž¬κ·€μ μœΌλ‘œ 생성해 데이터λ₯Ό λ„£μ–΄ 쀄 수 μžˆλ„λ‘ ν•˜μ˜€μŒ - μž¬κ·€μ μœΌλ‘œ 생성할 λ•Œ λ¬΄ν•œνžˆ λ§Œλ“€μ–΄ 질 수 없도둝 λ§ˆμ„μ˜ μ΅œμ†Œ 길이λ₯Ό μ„€μ •ν•΄μ„œ ν•΄λ‹Ή λ²”μœ„λ₯Ό λ²—μ–΄λ‚˜λ©΄ μž¬κ·€ν•¨μˆ˜λ₯Ό `return` ν•˜λ„λ‘ ν–ˆμŠ΅λ‹ˆλ‹€. <br> ```javascript const λ§ˆμ„μ΅œμ†ŒκΈΈμ΄ = 100; const λ§ˆμ„μƒμ„± = ({ κΈ°μ€€κ°€λ‘œκΈΈμ΄, κΈ°μ€€μ„Έλ‘œκΈΈμ΄, 기쀀사뢄면 }) => { if (κΈ°μ€€κ°€λ‘œκΈΈμ΄ < λ§ˆμ„μ΅œμ†ŒκΈΈμ΄ || κΈ°μ€€μ„Έλ‘œκΈΈμ΄ < λ§ˆμ„μ΅œμ†ŒκΈΈμ΄) return; return Array(λ§ˆμ„κ°œμˆ˜λžœλ€μƒμ„±()) .fill(0) .map((_, i) => { ... const μžμ‹λ§ˆμ„ = λ§ˆμ„μƒμ„±({ κΈ°μ€€κ°€λ‘œκΈΈμ΄: κ°€λ‘œκΈΈμ΄, κΈ°μ€€μ„Έλ‘œκΈΈμ΄: μ„Έλ‘œκΈΈμ΄, 기쀀사뢄면: μžμ‹μ‚¬λΆ„λ©΄, }); ... }) }; ``` - λ©”μ„œλ“œ: ν¬ν•¨λ˜λŠ” λ§ˆμ„ λ§Œλ“€κΈ° - λ©”μ„œλ“œ λŒ€μ‹  μ„œλ²„μ—μ„œ μž¬κ·€μ μœΌλ‘œ μƒμ„±ν•˜μ—¬ λ„˜κ²¨μ£ΌλŠ” λ°©μ‹μœΌλ‘œ λ³€κ²½ - validation ν•¨μˆ˜ - μ²˜μŒμ—” μž„μ˜λ‘œ λžœλ€ν•œ μ’Œν‘œλ₯Ό μ§€μ •ν•˜κ³ , μ’Œν‘œλ₯Ό 기쀀을 ν–ˆμ„ λ•Œ κ°€λ‘œ+μ„Έλ‘œκΈΈμ΄λ₯Ό λ”ν•΄μ„œ ν•΄λ‹Ή μ˜μ—­μ— μ‚¬κ°ν˜•μ΄ μžˆλŠ”μ§€λ₯Ό νŒλ‹¨ν•˜λŠ” μ•Œκ³ λ¦¬μ¦˜μ„ λ§Œλ“€μ–΄ `validation` 을 ν•΄μ•Όν•  것이라고 생각 ν–ˆμŠ΅λ‹ˆλ‹€ - μœ„ μ•Œκ³ λ¦¬μ¦˜μ΄ 맀우 λ³΅μž‘ν•  것이라고 생각이 λ“€μ—ˆκ³ , λ§ˆμ„ μ•ˆμ— ν¬ν•¨λ˜λŠ” μžμ‹λ§ˆμ„μ˜ ν˜•νƒœλ‘œ κ΅¬ν˜„μ„ ν•˜κ³ , κ·Έ λ§ˆμ„μ˜ μ˜μ—­μ„ 4λ“±λΆ„ ν•΄μ„œ μ‚¬μš©ν•˜μžκ³  μ œμ•½μ„ κ±Έλ©΄ 크게 겹칠일도 없을 것이라고 μƒκ°ν•˜μ—¬ λ”°λ‘œ λ§Œλ“€μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€ <br> ### λ―Έμ…˜ 2 - λΉ¨κ°„ μš°μ²΄ν†΅μ΄ μžˆλŠ” λ§ˆμ„ 좜λ ₯, μš°μ²΄ν†΅ 크기 순 좜λ ₯, 2초 λ’€ λ§ˆμ„ 색상 λ³€κ²½ 1. μš°μ²΄ν†΅μ΄ μžˆλŠ” λ§ˆμ„μ„ 돔 탐색해 μƒˆλ‘œμš΄ λ°°μ—΄(`μš°μ²΄ν†΅λ§ˆμ„λ“€`)둜 λͺ¨μœΌκΈ° - `μš°μ²΄ν†΅λ§ˆμ„λ“€` μ΄λΌλŠ” 배열에 ν•΄λ‹Ή λ§ˆμ„λ“€μ„ μΆ”κ°€ 2. μš°μ²΄ν†΅μ΄ μžˆλŠ” λ§ˆμ„ 이름 좜λ ₯ - `μš°μ²΄ν†΅λ§ˆμ„λ“€` 배열을 μˆœνšŒν•˜λ©΄μ„œ μ—μ„œ 각 λ§ˆμ„μ˜ 이름과, 총 λ§ˆμ„ 개수λ₯Ό 가져와 좜λ ₯ 3. μš°μ²΄ν†΅λ§ˆμ„μ„ μš°μ²΄ν†΅ν¬κΈ° 순으둜 버블정렬 ν›„ 크기순 이름 좜λ ₯ - `μš°μ²΄ν†΅λ§ˆμ„λ“€` 배열을 μš°μ²΄ν†΅ 크기 순으둜 버블 μ •λ ¬ - μˆœνšŒν•˜λ©΄μ„œ λ§ˆμ„ 이름 좜λ ₯ 7. 2초 λ”œλ ˆμ΄ ν›„ μš°μ²΄ν†΅λ§ˆμ„μ˜ 색상 λ³€κ²½ - 2초 λ”œλ ˆμ΄ - `μš°μ²΄ν†΅λ§ˆμ„λ“€` λ°°μ—΄ μˆœνšŒν•˜λ©΄μ„œ 각 λ§ˆμ„μ˜ `style.border`을 인라인 λ³€κ²½ ```javascript= λ²„νŠΌ.addEventListener("click", async () => { μš°μ²΄ν†΅λ§ˆμ„μ°ΎκΈ°(ν΄λž˜μŠ€λ‘œμš”μ†Œμ°ΎκΈ°("townMap")); λ§ˆμ„μ •λ³΄μΆœλ ₯(); await λ”œλ ˆμ΄(2000); μš°μ²΄ν†΅λ§ˆμ„λ“€.forEach((λ§ˆμ„) => { μš°μ²΄ν†΅λ§ˆμ„μƒ‰μƒλ³€κ²½(λ§ˆμ„); }); }); const λ§ˆμ„μ •λ³΄μΆœλ ₯ = () => { const μš°μ²΄ν†΅λ§ˆμ„μ΄λ¦„λ“€ = μš°μ²΄ν†΅λ§ˆμ„μ΄λ¦„λ“€ν™•μΈ(μš°μ²΄ν†΅λ§ˆμ„λ“€); ν΄λž˜μŠ€λ‘œμš”μ†Œμ°ΎκΈ°("townCount").innerHTML = `${μš°μ²΄ν†΅λ§ˆμ„μ΄λ¦„λ“€.join(", ")} 총 ${μš°μ²΄ν†΅λ§ˆμ„μ΄λ¦„λ“€.length}개의 λ§ˆμ„μž…λ‹ˆλ‹€.`; μš°μ²΄ν†΅λ§ˆμ„λ“€.νŒŒν¬μ˜λ‘œμš°μ •λ ¬((a, b) => μš°μ²΄ν†΅ν¬κΈ°ν™•μΈ(b) - μš°μ²΄ν†΅ν¬κΈ°ν™•μΈ(a)); ν΄λž˜μŠ€λ‘œμš”μ†Œμ°ΎκΈ°("boxSize").innerHTML = `μš°μ²΄ν†΅μ€ ν¬κΈ°λŠ” ${μš°μ²΄ν†΅λ§ˆμ„μ΄λ¦„λ“€ν™•μΈ(μš°μ²΄ν†΅λ§ˆμ„λ“€)} μˆœμž…λ‹ˆλ‹€.`; }; ``` <br> ### λ―Έμ…˜ 3 - `Express` μ—μ„œ λžœλ€ν•œ 둜직으둜 λ§ˆμ„ 데이터 μƒμ„±ν•΄μ„œ 전달 - λ―Έμ…˜ 1κ³Ό λ™μ‹œμ— μ§„ν–‰ν•˜λ©΄μ„œ, λ§ˆμ„ λ°μ΄ν„°μ˜ ꡬ쑰λ₯Ό 짜보고 μ‹œμž‘μ„ ν–ˆμŠ΅λ‹ˆλ‹€. - λ§ˆμ„ 데이터 ꡬ쑰λ₯Ό λ¨Όμ € μ§œλ‹ˆ `Client` μ—μ„œ ν•΄λ‹Ή 데이터 ꡬ쑰λ₯Ό λ°”νƒ•μœΌλ‘œ `Class` ꡬ쑰λ₯Ό κ΅¬μƒν•˜κΈ°κ°€ μˆ˜μ›”ν–ˆμŠ΅λ‹ˆλ‹€. - `fetch` μš”μ²­μ„ 보내면 μ„œλ²„μ—μ„œ λ§ˆμ„λ°μ΄ν„°λ₯΄λ₯΄ 생성해 json으둜 전달 ```javascript // μ„œλ²„ app.get("/town", (req, res) => { res.setHeader("Access-Control-Allow-Origin", "*"); res.json(데이터얻기()); }); // ν΄λΌμ΄μ–ΈνŠΈ const λ§ˆμ„μ •λ³΄κ°€μ Έμ˜€κΈ° = async () => { const res = await fetch("http://127.0.0.1:3000/town"); return res.json(); }; ``` ### λ―Έμ…˜ μ„Ήμ…˜ μ™Έ κ΅¬ν˜„ - `querySelector` -> `ν΄λž˜μŠ€λ‘œμš”μ†Œμ°ΎκΈ°` - `querySelector` λΌλŠ” `DOM API` κ°€ `Document` λΌλŠ” `DOM Tree` λ₯Ό μˆœνšŒν•˜λ©° `μš”μ†Œ`λ₯Ό μ°ΎλŠ” 것 이라고 μƒκ°ν•΄μ„œ, `Tree` λ₯Ό νƒμƒ‰ν•˜κΈ° μœ„ν•œ `DFS μ•Œκ³ λ¦¬μ¦˜` 을 μ‚¬μš©ν•˜λ©΄ λ˜μ§€ μ•Šμ„κΉŒ? λΌλŠ” μƒκ°μœΌλ‘œ μ‹œμž‘ν–ˆμŠ΅λ‹ˆλ‹€. - `DFS` κ°€ μ½œμŠ€νƒμ— 계속 μŒ“μ—¬μ„œ `Return` λ°›λŠ” 값을 μƒμƒν•˜κΈ°κ°€ 쑰금 μ–΄λ €μ› λŠ”λ°, λ””λ²„κΉ…νˆ΄λ‘œ 확인을 해도 이해λ₯Ό ν•˜κΈ° 쉽지 μ•Šμ€ 뢀뢄이 μžˆμ–΄μ„œ `DFS μ•Œκ³ λ¦¬μ¦˜` 을 μ’€ 더 곡뢀해보렀고 ν•©λ‹ˆλ‹€. - `DFS` 둜직 μ•ˆμ—μ„œ 두 번째 인자둜 λ°›λŠ” `클래슀` λ₯Ό `μ…€λ ‰ν„°` 같은 μ΄λ¦„μœΌλ‘œ λ°”κΎΈμ–΄μ„œ λ‚΄λΆ€ λ‘œμ§μ€ `μ…€λ ‰ν„°`에 따라 `μ°Ύμ€λ…Έλ“œ` λ₯Ό μ°ΎλŠ” ν•¨μˆ˜λ₯Ό λ³„λ„λ‘œ λ§Œλ“ λ‹€λ©΄ λ‹€μ–‘ν•œ `μ…€λ ‰ν„°`둜 `μš”μ†Œ`λ₯Ό 찾을 수 μžˆμ§€ μ•Šμ„κΉŒλž€ 생각을 ν–ˆκ³  이 뢀뢄은 천천히 ν™•μž₯해보렀고 ν•©λ‹ˆλ‹€. ```javascript const dfs = (μ‹œμž‘μ , 클래슀) => { const μžμ‹λ…Έλ“œλ“€ = [...μ‹œμž‘μ .children]; const μ°Ύμ€λ…Έλ“œ = μžμ‹λ…Έλ“œλ“€.find((μžμ‹λ…Έλ“œ) => μžμ‹λ…Έλ“œ.classList.contains(클래슀) ); if (μ°Ύμ€λ…Έλ“œ) { return μ°Ύμ€λ…Έλ“œ; } else { return μžμ‹λ…Έλ“œλ“€.map((μžμ‹λ…Έλ“œ) => dfs(μžμ‹λ…Έλ“œ, 클래슀)).find((v) => v); } }; const ν΄λž˜μŠ€λ‘œμš”μ†Œμ°ΎκΈ° = (클래슀) => { return dfs(document.body, 클래슀); }; ``` - `Array.prototype.sort` -> `Array.prototype.νŒŒν¬μ˜λ‘œμš°μ •λ ¬` - `λ°°μ—΄` 을 인자둜 λ°›μ•„μ„œ `λ°°μ—΄` 을 `Return` ν•˜λŠ” ν•¨μˆ˜ ν˜•νƒœλ‘œ 정렬을 λ§Œλ“€μ–΄ 보렀닀가, 기쑴에 `sort` 처럼 λ˜‘κ°™μ΄ λ™μž‘μ„ ν•  수 μžˆλ„λ‘ λ§Œλ“€μ–΄ 보고 μ‹Άλ‹€λŠ” 생각이 λ“€μ–΄μ„œ `Array.prototype` 의 λ©”μ†Œλ“œλ‘œ μΆ”κ°€ν•˜λŠ” 방식을 해보면 μ–΄λ–¨κΉŒ? λΌλŠ” 의견으둜 λ§Œλ“€μ–΄ 보게 λ˜μ—ˆμŠ΅λ‹ˆλ‹€. - `callback` 을 인자둜 λ°›κΈ° λ•Œλ¬Έμ— `callback` 을 μ‹€μ œλ‘œ μ–΄λ–»κ²Œ μ‚¬μš©ν•΄μ•Ό ν•˜λŠ”μ§€μ— λŒ€ν•΄ μƒκ°ν•˜λŠ”κ²Œ 쑰금 μ–΄λ €μ› λŠ”λ°, μž¬λ°ŒλŠ” κ²½ν—˜μ΄μ—ˆμŠ΅λ‹ˆλ‹€. - `μ •λ ¬` κ³Ό κ΄€λ ¨ν•΄μ„œ λ‹€μ–‘ν•œ μ•Œκ³ λ¦¬μ¦˜μ΄ μ‘΄μž¬ν•˜μ§€λ§Œ, νŽ˜μ–΄ν”„λ‘œκ·Έλž˜λ° νŠΉμ„±μƒ λ³΅μž‘ν•œ μ•Œκ³ λ¦¬μ¦˜μ„ λ”°λΌμΉ˜κΈ°λ³΄λ‹€λŠ” μ‹€μ œλ‘œ 정렬을 μ–΄λ–»κ²Œ ν•΄μ•Όν• μ§€ 생각을 직접 κ΅¬ν˜„ν•΄λ³΄λŠ” μ‹μœΌλ‘œ 정렬을 κ΅¬ν˜„ν•΄μ„œ `버블정렬` 처럼 λ§Œλ“€κ²Œ λ˜μ—ˆμŠ΅λ‹ˆλ‹€. `버블정렬` 말고도 λ‹€μ–‘ν•œ μ•Œκ³ λ¦¬μ¦˜μ„ 곡뢀해보렀 ν•©λ‹ˆλ‹€. ```javascript Array.prototype.νŒŒν¬μ˜λ‘œμš°μ •λ ¬ = function (callback) { const arr = this; for (let i = 0; i < arr.length - 1; i++) { for (let k = 0; k < arr.length - i - 1; k++) { const a = arr[k]; const b = arr[k + 1]; const diff = callback(a, b); if (diff > 0) { arr[k] = b; arr[k + 1] = a; } } } return arr; }; ``` - `setTimeout` -> `λ”œλ ˆμ΄` - `λ°€λ¦¬μ΄ˆ`λ₯Ό 인자둜 λ°›μ•„ ν•΄λ‹Ή μ‹œκ°„λ§ŒνΌ setTimeoutλ₯Ό μ‹€ν–‰ν•˜κ³  ν”„λ‘œλ―ΈμŠ€λ₯Ό λ°˜ν™˜ν•˜λŠ” λ”œλ ˆμ΄ ν•¨μˆ˜ κ΅¬ν˜„ν–ˆμŠ΅λ‹ˆλ‹€. - 였직 지연을 μ‹œν‚€λŠ” μ—­ν• λ§Œ ν•˜κΈ° λ•Œλ¬Έμ— 인자둜 `λ°€λ¦¬μ΄ˆ`만 λ°›κ³ , ν•΄λ‹Ήμ‹œκ°„μ΄ μ§€λ‚œ ν›„ resolve() ν•΄μ€¬μŠ΅λ‹ˆλ‹€. ```javascript const λ”œλ ˆμ΄ = (λ°€λ¦¬μ΄ˆ) => { return new Promise((resolve) => { setTimeout(() => { resolve(); }, λ°€λ¦¬μ΄ˆ); }); }; async () => { await λ”œλ ˆμ΄(2000); //2μ΄ˆλ’€μ— μ‹€ν–‰ }() ``` ## ☺️ λŠλ‚€μ  `Park` : `ν•œκΈ€μ½”λ”©` 으둜 처음 코딩을 ν•΄λ³΄μ•˜λŠ”λ°, 생각보닀 가독성이 훨씬 μ’‹μ•„μ‘Œλ‹€λŠ” 생각도 λ“€μ—ˆκ³ , λ³€μˆ˜, ν•¨μˆ˜λͺ…을 `ν•œκΈ€->μ˜μ–΄` 둜 λ²ˆμ—­ν•˜λŠ” 단계λ₯Ό 1 단계 μ€„μ—¬μ„œ 코딩을 ν•˜λŠ” μ‹œκ°„λ„ 물리적으둜 μ€„μ—ˆλ‹€κ³  λŠκΌˆμŠ΅λ‹ˆλ‹€. νŽ˜μ–΄ν”„λ‘œκ·Έλž˜λ°μ„ ν•˜λ©΄μ„œ κ°€μž₯ μ‹ μ˜ ν•œμˆ˜κ°€ μ•„λ‹ˆμ—ˆλ‚˜ λΌλŠ” 생각이 λ“€μ—ˆκ³  μž¬λ°ŒλŠ” κ²½ν—˜μ΄μ—ˆμŠ΅λ‹ˆλ‹€. μ½”λ”© 쀑간쀑간에 `λ‚˜μ˜ λ‘œμ§μ„ μ΄ν•΄ν–ˆλŠ”μ§€ ν™•μΈν•˜κ³  μ„€λͺ…ν•˜λŠ” κ³Όμ •`을 쀑간쀑간에 κ°–κ²Œλ˜λ‹ˆ λ‚˜μ˜ λ‘œμ§μ— λŒ€ν•΄μ„œ 더 μƒκ°ν•˜κ²Œ 되고 ν”Όλ“œλ°±λ„ 받을 수 μžˆμ–΄μ„œ μ’‹μ•˜μŠ΅λ‹ˆλ‹€. `Yellow` : `ν•œκΈ€μ½”λ”©`이 ꡉμž₯히 μž¬λ°ŒλŠ” κ²½ν—˜μ΄μ—ˆμŠ΅λ‹ˆλ‹€. 기쑴에 λ§Žμ€ 고민이 ν•„μš”ν–ˆλ˜ λ³€μˆ˜, ν•¨μˆ˜λͺ… 이름 μ§“λŠ” 과정을 쀄일 수 μžˆμ–΄μ„œ μ’‹μ•˜κ³ , λ˜ν•œ 가독성이 λ†’μ•„μ Έ ν”„λ‘œκ·Έλž˜λ°ν•˜λŠ”λ° (특히 νŽ˜μ–΄ν”„λ‘œκ·Έλž˜λ°) 큰 도움을 받은 것 κ°™μŠ΅λ‹ˆλ‹€. if, const, let 같은 κΈ°μ‘΄ μžλ°”μŠ€ν¬λ¦½νŠΈ 문법은 μ˜μ–΄λ‘œ, 저희가 μƒˆλ‘­κ²Œ λ§Œλ“  λ³€μˆ˜λͺ…, ν•¨μˆ˜λͺ…은 ν•œκΈ€λ‘œ μž‘μ„±ν•œ 것이 둜직과 저희가 λ§Œλ“  것을 더 잘 뢄리해 λ³Ό 수 μžˆμ–΄μ„œ 가독성이 μ˜¬λΌκ°„ 것 κ°™μŠ΅λ‹ˆλ‹€. νŠΉμ • κΈ°λŠ₯을 κ΅¬ν˜„ν•˜κΈ°μ „μ— μ„œλ‘œ 본인이 κ°€μ§„ 생각을 같이 κ³΅μœ ν•˜κ³  μ˜κ²¬μ„ λ‚˜λˆ„λŠ” 과정이, 혼자 κ³ λ―Όν•˜κ³  ν•™μŠ΅ν•˜λŠ” 것보닀 μ €μ—κ²Œ 더 νš¨κ³Όμ μ΄μ—ˆμŠ΅λ‹ˆλ‹€.