JavaScript (15) ์ธ๋ค์ผํ ๋ฆฌ์คํธํ [ JS ] e.stopPropagation ๊ณผ e.preventDefault ์ฐจ์ด ์๊ณ ๋์ด๊ฐ๊ธฐ e.stopPropagation()๊ณผ e.preventDefault()๋ ๋น์ทํ๊ฒ ์ฌ์ฉ๋์ง๋ง, ์์ ๋ค๋ฅธ ์ด๋ฒคํธ์ด๋ค.e.stopPropagation()์ ์ด๋ฒคํธ ํธ๋ค๋ฌ๊ฐ ์์ ํ๊ทธ์์ ์คํ๋์ง ์๋๋ก ๋ง๋ ์ญํ ์ ํ๋ค. ๋ค์๋งํด ์ด๋ฒคํธ์ ๋ฒ๋ธ๋ง์ ์ค์งํ์ฌ ํ์ฌ ์ด๋ฒคํธ๊ฐ ์์ ์์(๋ถ๋ชจ)๋ก ์ ํ๋๋ ๊ฒ์ ๋ง๋๋ค.e.preventDefault() ๋ ๊ธฐ๋ณธ ๋ธ๋ผ์ฐ์ ๋์์ ๊ฐ์ง ์ผ๋ถ ์ด๋ฒคํธ๊ฐ ํด๋น ๊ธฐ๋ณธ ๋์์ ์คํํ์ง ์๋๋ก ๋ฐฉ์งํ๋ค. ๋ณดํต ๋งํฌ ํด๋ฆญ ์ ํ์ด์ง ์ด๋๋ง๊ธฐ, ํผ ์ ์ถ์ ํ์ด์ง ๋ฆฌ๋ก๋ ๋ฐฉ์ง๋ฑ์ ๊ธฐ๋ณธ ๋์ ์ ์ด ์ญํ ์ ํ๋ค. e.stopPropagation() ์ด๋ฒคํธ ํธ๋ค๋ฌ์ ๋ฒ๋ธ๋ง์ ๋ฐฉ์งํด์ค๋ค.( ๋ฒ๋ธ๋ง : ์ด๋ฒคํธ์ ์์ ์ปดํฌ๋ํธ์์ ๋ถ๋ชจ๋ก (์์ชฝ -> ๋ฐ๊นฅ์ชฝ) ์ ํ๋๋ ๊ฒ. ) ex.. [ JS ] Promise VS async await ๋น๊ต ์๋ฐ์คํฌ๋ฆฝํธ์์ ๋น๋๊ธฐ ์์ ์ ์ฒ๋ฆฌํ๋ ์ฃผ์ ๋ฐฉ์์ธ Promise์ async/await์ ๋ํด ๋น๊ตํด๋ณด๋ ค๊ณ ํ๋ค. ํ์ ์์ ์ ํ๋ฉด์ ๋์ ์ฌ์ฉํ๋๋ฐ, ์ ํํ ์ด๋ป๊ฒ ๋ค๋ฅธ์ง ์ฐจ์ด์ ๊ณผ ํน์ง์ ๋น๊ตํด๋ณด๋ ค๊ณ ํ๋ค. (๋ ๋ค ES6+ ์ดํ์ ๋์ ๋์๋ค.) 1. ๋ฌธ๋ฒ - Promise: `.then()`, `.catch()`, `.finally()` ๋ฉ์๋๋ฅผ ์ฒด์ธ์ผ๋ก ์ฐ๊ฒฐํ์ฌ ์ฌ์ฉ. - async/await: ๋ ๋๊ธฐ์ ์ธ ์ฝ๋ ์คํ์ผ์ด๋ฉฐ `try/catch` ๊ตฌ๋ฌธ์ผ๋ก ์๋ฌ๋ฅผ ์ฒ๋ฆฌํ๋ค. 2. ๊ฐ๋ ์ฑ - Promise: ๋ณต์กํ ๋น๋๊ธฐ ๋ก์ง์์๋ ์ค์ฒฉ๋ `.then()`์ผ๋ก ์ธํด "์ฝ๋ฐฑ ์ง์ฅ"๊ณผ ์ ์ฌํ ์ํฉ์ด ๋ฐ์ํ ์ ์๋ค. - async/await: ์ผ๋ฐ์ ์ผ๋ก ๋ ์ฝ๊ธฐ ์ฌ์ด ์ง๊ด์ ์ธ ์ฝ๋๋ฅผ .. [ JS ] Event.stopPropagation์ Event.preventDefault ์ ์ฐจ์ด์ ์์๋ณด๊ธฐ. JavaScript์์ ์์ฃผ ์ฌ์ฉ๋์ง๋ง ์ข ์ข ํผ๋๋๋ ๋ ๊ฐ์ง ๋ฉ์๋์ธ Event.stopPropagation()๊ณผ Event.preventDefault()์ ๋ํด ์ ๋ฆฌ๋ฅผ ํด๋ณด๋ ค๊ณ ํ๋ค. Event.stopPropagation() `stopPropagation()` ๋ฉ์๋๋ ์ด๋ฒคํธ์ ๋ฒ๋ธ๋ง์ ์ค์ง์ํจ๋ค. element.addEventListener('click', function(event) { event.stopPropagation(); // ์ด๋ฒคํธ ์ฒ๋ฆฌ ๋ก์ง}); ์ฃผ์ ํน์ง )- ์ด๋ฒคํธ๊ฐ ์์ ์์๋ก ์ ํ๋๋ ๊ฒ์ ๋ง๋๋ค.- ์ค์ฒฉ๋ ์์์์ ํน์ ์ด๋ฒคํธ๋ฅผ ๋ ๋ฆฝ์ ์ผ๋ก ์ฒ๋ฆฌํ๊ณ ์ถ์ ๋ ์ ์ฉํ๋ค. ์ฌ์ฉ ์์ )์ค์ฒฉ๋ div์์ ํด๋ฆญ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ์ ๋, ํด๋น div์์๋ง ์ด.. [ TypeScript ] ํ์ ์ ์ํ interface ์ ํํธ ์ฃผ์ ๋ฌ๊ธฐ. ts๋ก ํ๋ก์ ํธ๋ฅผ ๊ฐ๋ฐ ์ค์ interface์ ์ถ๊ฐ์ ์ธ ์ค๋ช ์ด ์์ผ๋ฉด ์ข๊ฒ ๋ค~! ๋ผ๋ ์๊ฐ์ด ๋ค์ด์ ํ์์๋ method๋ method parameter์ ๋ํ ์ค๋ช ์ ๋ฌ์์ค ๋ ์์ฃผ ์ฌ์ฉํ๋ JSDoc์ ์ด์ฉํ์ฌ interface ์ค๋ช ์ ์ถ๊ฐํด ๋ณด์๋ค. ๋จผ์ JSDoc์ ๋ํด ์ค๋ช ํ์๋ฉด, JSDoc์ ์๋ฐ์คํฌ๋ฆฝํธ์ฉ API ๋ฌธ์ ์์ฑ๊ธฐ๋ก ์๋ฐ์คํฌ๋ฆฝํธ ์ ํ๋ฆฌ์ผ์ด์ ๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ API๋ฅผ ๋ฌธ์ํํ๋ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉํ๋ค. module, namespaces, classes, methods, method parameters ๋ฑ๊ณผ ๊ฐ์ ํญ๋ชฉ๋ค์ ๋ฌธ์ํํ ์ ์๋ค. JSDoc์ ์ฝ๋ ์์ฒด์ ํจ๊ป ์์ค์ฝ๋์ ์ง์ ๋ฌธ์ ์ฃผ์์ ์ถ๊ฐํ๋ ๊ธฐ๋ฅ์ ๊ฐ์ง๊ณ ์๋ค. JSDoc ์ฃผ์์ ์ผ๋ฐ์ ์ผ๋ก ๋ฌธ์ํํ๋ ค๋ ์ฝ๋ ๋ฐ๋ก ์์ ์์น.. [TS] ํ๋ก์ ํธ์ tsconfig ์ค์ ํ๊ธฐ. ํ๋ก์ ํธ๋ฅผ ์ฒ์ ์ธํ ํ ๋, TypeScript ๋ก ํ์ ์ฒดํฌ๋ฅผ ์ด๋๊น์ง ํ์ฉํ ์ง, ์ด๋ค ์ค์ ์ผ๋ก ์ฐ๋ฆฌ์ ํ๋ก์ ํธ๋ฅผ ์ธ์ง ๊ณ ๋ฏผํ๋ ์ค ํ์๋ค(+๋)์ ํ์ ์คํฌ๋ฆฝํธ ๋ฅ์๋๊ฐ ๊ทธ๋ฆฌ ๋์ง ์๋ค๋ ๊ฒ์ ์๊ฒ๋์ด ๊ธฐ๋ณธ ํ์ ์คํฌ๋ฆฝํธ ์ธํ ์ ํ๋ฉฐ ์ฐ๋ ๊ธ. tsconfig.json ์ค์ fucntion add(a,b){ return a+b; } add(10, null); // noImplicitAny ์ค์ ์ด ๊บผ์ ธ์๋ค๋ฉด ์์ ์ฝ๋๋ ํ์ ์ฒด์ปค๋ฅผ ํต๊ณผํ๊ณ , // noImplicitAny ์ค์ ์ด ์ผ์ ธ์๋ค๋ฉด ์ค๋ฅ๊ฐ ๋๋ค. **์์ ์์์ ๊ฒฝ์ฐ, ํ์ ์คํฌ๋ฆฝํธ์ ์ค์ ์ ๋ฐ๋ผ ๋์ผ ์ฝ๋๋ผ๋ ํ์ ์ฒด์ปค์ ํต๊ณผ ๊ฐ๋ฅ์ฌ๋ถ๊ฐ ๋ฌ๋ผ์ง๋ค. ํ์ ์คํฌ๋ฆฝํธ๋ ์ค์ ์ด 100๊ฐ ๊ฐ๊น์ด ๋๊ธฐ๋๋ฌธ์, ์ฐ๋ฆฌ ํ๋ก์ ํธ์์ ์ด๋ค ํ์ ์คํฌ๋ฆฝํธ ์ค์ ์ ์ฌ์ฉํ๋์ง.. [ JavaScript ] async await ๋ฌธ๋ฒ ES8์์ ๊ฐ๋จํ๊ณ ๊ฐ๋ ์ฑ ์ข๊ฒ ๋น๋๊ธฐ ์ฒ๋ฆฌ๋ฅผ ๋๊ธฐ์ฒ๋ผ ๋์ํ๋๋ก ๊ตฌํํ ์ ์๋ async/await๊ฐ ๋ฑ์ฅํ๋ค. async/await๋ ํ๋ก๋ฏธ์ค๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋์ํ๋ฉฐ, async/await๋ฅผ ์ฌ์ฉํ๋ฉด ํ๋ก๋ฏธ์ค์ ํ์ ์ฒ๋ฆฌ ๋ฉ์๋ ์์ด ๋ง์น ๋๊ธฐ ์ฒ๋ฆฌ์ฒ๋ผ ํ๋ก๋ฏธ์ค๊ฐ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋๋ก ๊ตฌํํ ์ ์๋ค. async ํจ์๋ async ํค์๋๋ฅผ ํตํด ์ ์ํ๊ณ , ํ๋ก๋ฏธ์ค๋ฅผ ์ฌ์ฉํ์ฌ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋ค. async function asyncCall() { console.log('calling'); const result = await resolveAfter2Seconds(); console.log(result); // expected output: "resolved" } asyncCall(); await ํค์๋๋.. [ JavaScript / Promise ] ์๋ฐ์คํฌ๋ฆฝํธ์ Promise์ ๋ํ์ฌ ์๋ฐ์คํฌ๋ฆฝํธ๋ ์ฑ๊ธ ์ค๋ ๋ ๋ฐฉ์์ผ๋ก ๋์ํ๋ ์ธ์ด์ด๊ธฐ ๋๋ฌธ์ ๋๊ธฐ ๋ฐฉ์์ผ๋ก ํ์คํฌ๋ฅผ ์ฒ๋ฆฌํ๋ค. ๊ทธ๋์ ๋น๋๊ธฐ ๋ฐฉ์์ผ๋ก ์ฒ๋ฆฌ๋ฅผ ํ๋ ค๋ฉด ๊ณผ๊ฑฐ์๋ ์ฃผ๋ก ์ฝ๋ฐฑ ํจํด์ ์ฌ์ฉํ๋๋ฐ, ์ฝ๋ฐฑ ํจํด์ ์ฝ๋ฐฑ ํฌ๋ก ์ธํด ๊ฐ๋ ์ฑ์ด ์ข์ง ์๊ณ ์๋ฌ ์ฒ๋ฆฌ ๋ฐ ์ฌ๋ฌ ๊ฐ์ ๋น๋๊ธฐ ์ฒ๋ฆฌ๋ฅผ ํ๋ฒ์ ํ๊ธฐ๋ ํ๋ค๋ค๋ ๋จ์ ์ด ์๊ธฐ ๋๋ฌธ์ ES6์์ ๋์ ๋ Promise๋ฅผ ์ด์ฉํ๋ฉด ์ด๋ฌํ ๋จ์ ๋ค์ ๋ณด์ํ๋ฉฐ ๋น๋๊ธฐ ์ฒ๋ฆฌ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํ๋ค. ๋น๋๊ธฐ ํจ์๋? ์์ ์ด ์๋ฃ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ์ ์ฌ์ ์ผ๋ก ์ค๋ ์คํ๋๋ ์์ ์ ์์ํ์ฌ ํด๋น ์์ ์ด ์คํ๋๋ ๋์์๋ ๋ค๋ฅธ ์ด๋ฒคํธ์ ์๋ตํ ์ ์๊ฒ ํ๋ ๊ธฐ์ ๋ก ์์ ์ด ์๋ฃ๋๋ฉด ํ๋ก๊ทธ๋จ์ด ๊ฒฐ๊ณผ๋ฅผ ์ ๊ณตํ๋ค. ์ด ๋๋ฌธ์ ๋น๋๊ธฐ ํจ์ ๋ด๋ถ์ ๋น๋๊ธฐ๋ก ๋์ํ๋ ์ฝ๋์์ ์ฒ๋ฆฌ ๊ฒฐ๊ดด๋ฅผ ์ธ๋ถ๋ก ๋ฐํํ๊ฑฐ๋ ์์ ์ค์ฝํ์.. [ JavaScript ] undefined์ null์ ์ฐจ์ด์ ๋ํด ์์๋ณด๊ธฐ. ์๋ฐ์คํฌ๋ฆฝํธ์์ '๋น'๊ฐ์ ์๋ฏธํ๋ ๋น์ทํ ์์ ๊ฐ์ด ์กด์ฌํ๋๋ฐ ๋ฐ๋ก null๊ณผ undefined ์ด๋ค. 1. undefined ES6๊ธฐ์ค 7๊ฐ์ ๋ฐ์ดํฐ ํ์ ์ค ํ๋์ธ undefined๋ var ํค์๋๋ฅผ ํตํด ์ ์ธ์ ํ๋ฉด ์ ์ธ๊ณผ ๋์์ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ์ํด undefined๋ก ์ด๊ธฐํ ๋๊ธฐ ๋๋ฌธ์, ํ ๋น๋ฌธ ์ด์ ์ ๋ณ์๋ฅผ ์ฐธ์กฐํ๋ ค๊ณ ํ๋ฉด undefined๊ฐ ๋ฐํ๋๋ค. ( let ํค์๋์ const ํค์๋๋ undefined๋ก ์ด๊ธฐํ๋์ง ์์. ) var user; console.log(user); // undefined undefined์ ๊ฐ์ undefined๊ฐ ์ ์ผํ๋ฉฐ ๊ฐ๋ฐ์๊ฐ ์๋์ ์ผ๋ก ์ค ๋น ๊ฐ์ด ์๋๋ผ, ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ์ํด undefined๋ก ์ด๊ธฐํ๋ ๊ฐ์ด๋ค. console๋ก ์ฐ์์ ๋ u.. ์ด์ 1 2 ๋ค์