๐ŸŽจ Frontend/JavaScript 3

[JavaScript] Event Loop

๋ธŒ๋ผ์šฐ์ € ์ด๋ฒคํŠธ ๋ฃจํ”„(Event Loop) ์ •๋ฆฌ๋ชฉ์ฐจ1. ์ด๋ฒคํŠธ ๋ฃจํ”„๋ž€?2. ๋ธŒ๋ผ์šฐ์ € ํ™˜๊ฒฝ์˜ ๊ตฌ์กฐ (๋Ÿฐํƒ€์ž„)3. ํƒœ์Šคํฌ ํ์˜ ์ข…๋ฅ˜์™€ ์šฐ์„ ์ˆœ์œ„4. ์ด๋ฒคํŠธ ๋ฃจํ”„์˜ ๋™์ž‘ ๊ณผ์ •1. ์ด๋ฒคํŠธ ๋ฃจํ”„๋ž€?์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ(Single Thread) ์–ธ์–ด์ž…๋‹ˆ๋‹ค. ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ์ž‘์—…๋งŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ , ๋ธŒ๋ผ์šฐ์ €์—์„œ ์—ฌ๋Ÿฌ ์ž‘์—…์„ ๋™์‹œ์— ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋А๊ปด์ง€๋Š” ์ด์œ ๋Š” ๋ฐ”๋กœ ์ด๋ฒคํŠธ ๋ฃจํ”„ ๋•๋ถ„์ž…๋‹ˆ๋‹ค. ์ด๋ฒคํŠธ ๋ฃจํ”„๋Š” ํ˜ธ์ถœ ์Šคํƒ์ด ๋น„์–ด์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ , ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๋Š” ๋น„๋™๊ธฐ ์ž‘์—…๋“ค์„ ์ ์ ˆํ•œ ์‹œ์ ์— ์‹คํ–‰ํ•ด์ฃผ๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.2. ๋ธŒ๋ผ์šฐ์ € ํ™˜๊ฒฝ์˜ ๊ตฌ์กฐCall Stack: ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ํ•จ์ˆ˜๋“ค์ด ์Œ“์ด๋Š” ๊ณต๊ฐ„ (LIFO ๊ตฌ์กฐ)Web APIs: ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ œ๊ณตํ•˜๋Š” API (setTimeout, DOM, AJAX ๋“ฑ)...

[JavaScript] ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ

JavaScript ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ์ •๋ฆฌ๋ชฉ์ฐจ1. ๋ฉ”๋ชจ๋ฆฌ ์ƒ๋ช… ์ฃผ๊ธฐ2. ์Šคํƒ(Stack) vs ํž™(Heap)3. ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜ (GC)4. V8 ์—”์ง„์˜ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜ ์ตœ์ ํ™”1. ๋ฉ”๋ชจ๋ฆฌ ์ƒ๋ช… ์ฃผ๊ธฐํ• ๋‹น → ์‚ฌ์šฉ → ํ•ด์ œJavaScript๋Š” ์—”์ง„์ด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ž๋™ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.์ฐธ๊ณ : C์–ธ์–ด๋Š” malloc(), free()๋ฅผ ํ†ตํ•ด ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ํ• ๋‹น๊ณผ ํ•ด์ œ๋ฅผ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.2. ์Šคํƒ(Stack) vs ํž™(Heap)์Šคํƒ (Stack)์›์‹œ๊ฐ’, ์ฐธ์กฐ ์ฃผ์†Œ ์ €์žฅ๊ณ ์ • ํฌ๊ธฐ (์ •์  ๋ฉ”๋ชจ๋ฆฌ)์†๋„๊ฐ€ ๋งค์šฐ ๋น ๋ฆ„์‹คํ–‰ ์ปจํ…์ŠคํŠธ, ๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ๊ณผ ๊ด€๋ จ๋จํž™ (Heap)๊ฐ์ฒด, ๋ฐฐ์—ด ์ €์žฅ๊ฐ€๋ณ€ ํฌ๊ธฐ (๋™์  ๋ฉ”๋ชจ๋ฆฌ)์Šคํƒ์— ๋น„ํ•ด ์ƒ๋Œ€์ ์œผ๋กœ ๋А๋ฆผ3. ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜ (GC)Reference Counting (์ฐธ์กฐ ํšŸ์ˆ˜ ๊ณ„์‚ฐ)์ฐธ์กฐ ํšŸ์ˆ˜๋ฅผ ์„ธ์„œ 0์ด ๋˜๋ฉด ๋ฉ”..

[JavaScript] ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ

JavaScript ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ์ •๋ฆฌ ๋ชฉ์ฐจ 1. ๋™๊ธฐ vs ๋น„๋™๊ธฐ 2. ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ๋ฐฉ์‹์˜ ์ง„ํ™” (Callback, Promise, Async/Await) 3. Promise ์œ ํ‹ธ๋ฆฌํ‹ฐ ๋ฉ”์„œ๋“œ 4. ํ•ต์‹ฌ ์ •๋ฆฌ ๋ฐ ์š”์•ฝ 1. ๋™๊ธฐ vs ๋น„๋™๊ธฐ ๋™๊ธฐ(Synchronous) ์ฝ”๋“œ๊ฐ€ ์ˆœ์ฐจ์ ์œผ๋กœ ์‹คํ–‰๋˜๋ฉฐ, ํ•˜๋‚˜์˜ ์ž‘์—…์ด ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๋‹ค์Œ ์ž‘์—…์ด ๋Œ€๊ธฐ ์ด์ „ ์ž‘์—…์ด ๋๋‚˜์•ผ ๋‹ค์Œ ์ž‘์—… ์‹œ์ž‘ ๋น„๋™๊ธฐ(Asynchronous) ํŠน์ • ์ฝ”๋“œ์˜ ์™„๋ฃŒ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ์ฆ‰์‹œ ์‹คํ–‰ ๋ธ”๋กœํ‚น(Blocking) ์—†์Œ: ์‹คํ–‰ ํ๋ฆ„์ด ๋ฉˆ์ถ”์ง€ ์•Š์Œ ์‹คํ–‰ ์ˆœ์„œ ๋ณด์žฅ ์•ˆ ๋จ: ์ฝ”๋“œ ์ž‘์„ฑ ์ˆœ์„œ์™€ ์‹คํ–‰ ์™„๋ฃŒ ์ˆœ์„œ๊ฐ€ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Œ ..