๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

JavaScript

(12)
[ 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..
[ JavaScript ] var, let, const ํŒŒํ—ค์น˜๊ธฐ. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ํ‚ค์›Œ๋“œ๋Š” var, let, const ์ด๋ ‡๊ฒŒ ์ด 3๊ฐ€์ง€๊ฐ€ ์กด์žฌํ•œ๋‹ค. 1. var var ํ‚ค์›Œ๋“œ๋Š” ES6 ์ด์ „( let, const๊ฐ€ ๋‚˜์˜ค๊ธฐ ์ด์ „ )์— ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋˜ ํ‚ค์›Œ๋“œ์˜€๋‹ค. var ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๋ฉด ๋Ÿฐํƒ€์ž„ ์ด์ „์— ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์— ์˜ํ•ด ์•”๋ฌต์ ์œผ๋กœ "์„ ์–ธ"๋‹จ๊ณ„์™€ "์ดˆ๊ธฐํ™”"๋‹จ๊ณ„๋ฅผ ๊ฑฐ์น˜๊ฒŒ ๋œ๋‹ค. ์„ ์–ธ ๋‹จ๊ณ„์—์„œ๋Š” ์Šค์ฝ”ํ”„์— ๋ณ€์ˆ˜ ์‹๋ณ„์ž๋ฅผ ๋“ฑ๋กํ•ด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์— ๋ณ€์ˆ˜์˜ ์กด์žฌ๋ฅผ ์•Œ๋ฆฌ๊ณ  ๊ทธ ์ฆ‰์‹œ ์ดˆ๊ธฐํ™” ๋‹จ๊ณ„์—์„œ undefined๋กœ ๋ณ€์ˆ˜๋ฅผ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค. var ํ‚ค์›Œ๋“œ๋Š” ๋ณ€์ˆ˜ ๋ธ”๋ก์„ ๊ณ ๋ คํ•˜์ง€ ์•Š๊ณ , ํ˜„์žฌ ํ•จ์ˆ˜(var ํ‚ค์›Œ๋“œ๋ฅผ ์„ ์–ธํ•œ ํ•จ์ˆ˜)๋˜๋Š” ์ „์—ญ ์Šค์ฝ”ํ”„ ์–ด๋””์—์„œ๋‚˜ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•œ๋‹ค. // ๋ณ€์ˆ˜ a์— ๋Œ€ํ•ด ์„ ์–ธ. var a; ์ด๋ ‡..
[ JavaScript / Error ] ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ Error ๊ฐ์ฒด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๋Ÿฐํƒ€์ž„ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด Error ๊ฐ์ฒด๋ฅผ ๋˜์ ธ์ฃผ๊ณ  ๊ฐœ๋ฐœ์ž๋“ค์€ ์ด๋ฅผ ํ†ตํ•ด ์—๋Ÿฌ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ฃผ๊ณ  ๋””๋ฒ„๊น…์„ ํ•  ์ˆ˜ ์žˆ๋‹ค. Error์ƒ์„ฑ์ž ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ์—๋Ÿฌ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. Error ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ์ƒ์„ฑ๋œ ์—๋Ÿฌ ๊ฐ์ฒด๋Š” message ํ”„๋กœํผํ‹ฐ(Error ์ƒ์„ฑ์ž ํ•จ์ˆ˜์— ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋œ ์—๋Ÿฌ ๋ฉ”์„ธ์ง€)์™€ stack ํ”„๋กœํผํ‹ฐ(์—๋Ÿฌ๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ ์ฝœ์Šคํƒ์˜ ํ˜ธ์ถœ ์ •๋ณด๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฌธ์ž์—ด)๋ฅผ ๊ฐ–๋Š”๋‹ค. ์•„๋ž˜์˜ ํ‘œ๋ฅผ ํ†ตํ•ด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ํ‘œ์ค€ ๋‚ด์žฅ ์˜ค๋ฅ˜ ์œ ํ˜•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž. ์œ ํ˜•(์ƒ์„ฑ์ž ํ•จ์ˆ˜) ์ธ์Šคํ„ด์Šค EvalError ์ „์—ญ ํ•จ์ˆ˜ eval()์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์—๋Ÿฌ ๊ฐ์ฒด RangeError ์ˆซ์ž ๋ณ€์ˆ˜๋‚˜ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์œ ํšจ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚ฌ์„ ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์—๋Ÿฌ ๊ฐ์ฒด ReferenceError ์ž˜๋ชป๋œ ์ฐธ์กฐ์— ๋Œ€ํ•ด ๋ฐœ์ƒํ•˜๋Š” ..
[ Javascript ] ์›์‹œ ๊ฐ’๊ณผ ๊ฐ์ฒด์˜ ์ฐจ์ด์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ธฐ. ์›์‹œ ๊ฐ’ (Primitive) MDN - ์›์‹œ ๊ฐ’ ์„ค๋ช… ์›์‹œ ๊ฐ’ - ์šฉ์–ด ์‚ฌ์ „ | MDN JavaScript์—์„œ ์›์‹œ ๊ฐ’(primitive, ๋˜๋Š” ์›์‹œ ์ž๋ฃŒํ˜•)์ด๋ž€ ๊ฐ์ฒด๊ฐ€ ์•„๋‹ˆ๋ฉด์„œ ๋ฉ”์„œ๋“œ๋„ ๊ฐ€์ง€์ง€ ์•Š๋Š” ๋ฐ์ดํ„ฐ์ž…๋‹ˆ๋‹ค. ์›์‹œ ๊ฐ’์—๋Š” 7์ข…๋ฅ˜, string, number (en-US), bigint (en-US), boolean, undefined, symbol, ๊ทธ๋ฆฌ๊ณ  null์ด developer.mozilla.org ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ์›์‹œ ๊ฐ’์€ ๊ฐ์ฒด๊ฐ€ ์•„๋‹ˆ๊ณ , ๋ฉ”์„œ๋“œ๋ฅผ ๊ฐ€์ง€์ง€ ์•Š๋Š” ๋ฐ์ดํ„ฐ๋กœ ์•„๋ž˜์™€ ๊ฐ™์ด ์ด 7๊ฐ€์ง€์˜ ์ข…๋ฅ˜๊ฐ€ ์กด์žฌํ•œ๋‹ค. - string - number - bigint - boolean - undefined - symbol - null ์›์‹œ ํƒ€์ž…์˜ ๊ฐ’์€ ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ฐ’์œผ๋กœ, ๋ณ€์ˆ˜์— ์›์‹œ ๊ฐ’์„ ์žฌํ• ..