How JavaScript Works

์บกํ‹ดํŒ๊ต๋‹˜์˜ ํฌ์ŠคํŒ…์„ ์ฝ๊ณ  ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋™์ž‘์›๋ฆฌ: ์—”์ง„, ๋Ÿฐํƒ€์ž„, ํ˜ธ์ถœ ์Šคํƒ

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„

๋Œ€ํ‘œ์ ์ธ ์˜ˆ๋Š” Google V8 ์—”์ง„. V8์€ Chrome๊ณผ Node.js์—์„œ ์‚ฌ์šฉ

์—”์ง„์˜ ์ฃผ์š” ๊ตฌ์„ฑ์š”์†Œ

  • Memory Heap : ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์ด ์ผ์–ด๋‚˜๋Š” ๊ณณ

  • Call Stack : ์ฝ”๋“œ ์‹คํ–‰์— ๋”ฐ๋ผ ํ˜ธ์ถœ ์Šคํƒ์ด ์Œ“์ด๋Š” ๊ณณ

๋Ÿฐํƒ€์ž„

๊ฑฐ์˜ ๋ชจ๋“  ๊ฐœ๋ฐœ์ž๋“ค์ด setTimeout๊ณผ ๊ฐ™์€ ๋ธŒ๋ผ์šฐ์ € ๋‚ด์žฅ API๋ฅผ ์‚ฌ์šฉํ•˜์ง€๋งŒ ์ด API๋ฅผ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์—์„œ ์ œ๊ณตํ•˜์ง€๋Š” ์•Š์Œ

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์— ๊ด€์—ฌํ•˜๋Š” ์š”์†Œ๋“ค

  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„

  • Web APIs (DOM, AJAX, Timeout)

  • Event Loop, Callback Queue

ํ˜ธ์ถœ ์Šคํƒ(Call Stack)

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์‹ฑ๊ธ€ ์“ฐ๋ ˆ๋“œ ๊ธฐ๋ฒˆ์–ธ์–ด๋กœ ํ˜ธ์ถœ ์Šคํƒ์ด ํ•˜๋‚˜. ๋”ฐ๋ผ์„œ ํ•œ ๋ฒˆ์— ํ•œ ์ž‘์—…๋งŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Œ

  • ํ˜ธ์ถœ ์Šคํƒ์€ ์šฐ๋ฆฌ๊ฐ€ ํ”„๋กœ๊ทธ๋žจ ์ƒ์—์„œ ์–ด๋””์— ์žˆ๋Š”์ง€๋ฅผ ๊ธฐ๋กํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ

  • ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ํ•ด๋‹น ํ•จ์ˆ˜๋Š” ํ˜ธ์ถœ ์Šคํƒ์˜ ๊ฐ€์žฅ ์ƒ๋‹จ์— ์œ„์น˜ํ•˜๊ณ  ํ•จ์ˆ˜ ์‹คํ–‰์ด ๋๋‚˜๋ฉด ํ•ด๋‹น ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœ ์Šคํƒ์—์„œ ์ œ๊ฑฐ

  • ํ•˜๋Š” ๊ฒƒ์ด ์Šคํƒ์˜ ์—ญํ• 

  • ํ˜ธ์ถœ ์Šคํƒ์ด ์ตœ๋Œ€ ํฌ๊ธฐ๊ฐ€ ๋˜๋ฉด ์Šคํƒ ๋‚ ๋ ค ๋ฒ„๋ฆฌ๊ธฐ๊ฐ€ ์ผ์–ด๋‚จ(Overflowing)

-> ์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ ๊ธฐ๋ฐ˜ ์ฝ”๋”ฉ์€ ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ ํ™˜๊ฒฝ์—์„œ ์ œ๊ธฐ๋˜๋Š” ๋ณต์žกํ•œ ๋ฌธ์ œ๋‚˜ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ๊ณ ๋ฏผํ•˜์ง€ ์•Š์•„๋„ ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์‰ฌ์›€(ex, ๋ฐ๋“œ๋ฝ) -> ๊ทธ๋Ÿฌ๋‚˜ ์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ์—์„œ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฑด ์ƒ๋‹นํžˆ ์ œ์•ฝ์ด ๋งŽ์Œ -> ํ•œ ๊ฐœ์˜ ํ˜ธ์ถœ ์Šคํƒ์„ ๊ฐ–๊ณ  ์žˆ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์‹คํ–‰์ด ๋А๋ ค์ง„๋‹ค๋ฉด?

๋™์‹œ์„ฑ(concurrency) & ์ด๋ฒคํŠธ ๋ฃจํ”„(Event Loop)

  • ํ˜ธ์ถœ ์Šคํƒ์— ์ฒ˜๋ฆฌ ์‹œ๊ฐ„์ด ๋งค์šฐ ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ํ•จ์ˆ˜๊ฐ€ ์žˆ๋‹ค๋ฉด,

  • ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋˜๋Š” ๋™์•ˆ ๋ธŒ๋ผ์šฐ์ €๋Š” ์•„๋ฌด ์ž‘์—…๋„ ๋ชปํ•˜๊ณ  ๋Œ€๊ธฐ ์ƒํƒœ๊ฐ€ ๋จ

  • ํŽ˜์ด์ง€ ๋ Œ๋”๋ง ๋™์ž‘์„ ๋ฐฉํ•ดํ•˜์ง€ ์•Š๊ณ  ๋ธŒ๋ผ์šฐ์ €์˜ ์‘๋‹ต๋„ ๋Š์ง€ ์•Š์œผ๋ฉด์„œ ์—ฐ์‚ฐ๋Ÿ‰์ด ๋งŽ์€ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ ค๋ฉด,

  • ๋น„๋™๊ธฐ ์ฝœ๋ฐฑ

210913

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๊ฐ€ ์™œ ์ค‘์š”ํ•œ์ง€ ์•Œ ์ˆ˜ ์žˆ์—ˆ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์ž‘๋™ ๋ฐฉ์‹์— ๋Œ€ํ•ด ์ข€ ๋” ์•Œ์•„๋ณด๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค.

Last updated