๐โ๏ธ๋ชฉ์ฐจ
JavaScript๋ ์ฑ๊ธ ์ค๋ ๋๋ก ๋์?!
๋น๋๊ธฐ ์ฝ๋๋ ์ด๋ป๊ฒ ์๋ํ๋๊ฐ?
๐ปJavascript๋ ์ฑ๊ธ ์ค๋ ๋๋ก ๋์?!
โ ์ฑ๊ธ์ค๋ ๋ = ํ ๋ฒ์ ํ๋์ ์์ ๋ง ์ํ
๊ทธ๋ฐ๋ฐ ์ด๋ป๊ฒ ๋น๋๊ธฐ๋ก ์ผ์ ์ฒ๋ฆฌํ ์ ์๋๊ฑฐ์ง?๐ค??
→ ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ๊ตฌ๋๋๋ ํ๊ฒฝ(๋ธ๋ผ์ฐ์ , Node.js ๋ฑ)์์๋ ์ฃผ๋ก ์ฌ๋ฌ๊ฐ์ ์ค๋ ๋๊ฐ ์ฌ์ฉ๋๋ฉฐ,
์ด๋ฌํ ๊ตฌ๋ ํ๊ฒฝ์ด ๋จ์ผ ํธ์ถ ์คํ์ ์ฌ์ฉํ๋ ์๋ฐ ์คํฌ๋ฆฝํธ ์์ง๊ณผ ์ํธ ์ฐ๋ํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ์ฅ์น๊ฐ ๋ฐ๋ก ์ด๋ฒคํธ๋ฃจํ!!
๐ป๋ธ๋ผ์ฐ์ ํ๊ฒฝ
์ ๊ทธ๋ฆผ์ ๋ธ๋ผ์ฐ์ ํ๊ฒฝ์ ๊ฐ๋จํ๊ฒ ๊ทธ๋ฆผ์ผ๋ก ํํํ ๊ฒ์ด๋ค.
- ์๋ฐ์คํฌ๋ฆฝํธ ์์ง (์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๋ฅผ ํด์ํ๊ณ ์คํํ๋ ์ธํฐํ๋ฆฌํฐ)
- Heap : ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ด ์ผ์ด๋๋ ๋ถ๋ถ
- Call Stack : ํจ์๊ฐ ํธ์ถ๋๋ ์์๋๋ก ์์ด๋ ์คํ
- ์๋ฐ์คํฌ๋ฆฝํธ ์์ง ์ธ
- Web API : ๋ธ๋ผ์ฐ์ ์์ ์์ฒด ์ง์ํ๋ API.
setTimeout
์ด๋XMLHttpRequest
๋ฑ ๋น๋๊ธฐ ์์ ์ ์ํํ ์ ์๋๋ก ํจ - ์ฝ๋ฐฑ ํ(ํ์คํฌ ํ) : Web API์์ ๋น๋๊ธฐ ์์ ์ด ์คํ๋ ํ ์ฝ๋ฐฑํจ์๋ค์ด ๋๊ธฐํ๋ ๊ณณ
- ์ด๋ฒคํธ ๋ฃจํ : ์ฝ์คํ์ด ๋น์ด์์ ๋ ํ์คํฌ ํ์ ์๋ ์ฝ๋ฐฑ ํจ์๋ค์ ๋๊ฒจ์ค
- Web API : ๋ธ๋ผ์ฐ์ ์์ ์์ฒด ์ง์ํ๋ API.
๐ป๋น๋๊ธฐ์ฝ๋๋ ์ด๋ป๊ฒ ์๋ํ๋๊ฐ?
- ํจ์๋ฅผ ์คํํ๋ฉด ์ฝ์คํ์ ์์ด๊ฒ ๋๊ณ , ํจ์๊ฐ ๊ฐ์ ๋ฐํํจ๊ณผ ๋์์ ์คํ์์ ๋น ์ ธ๋์ ์ฌ๋ผ์ง๋ค.
setTimeout
์ web API์Timer
๋ฅผ ์์ฑํ๊ณ , ์ฝ๋ฐฑํจ์๋ฅผ ๋๊ฒจ์ค๋ค.Timer
๋ ์ผ์ ์๊ฐ์ ๋๊ธฐํ๋ฉด(ํน์ ๋น๋๊ธฐ ์ผ์ ๋๋ด๋ฉด) callback์ ํ์คํฌํ์ ๋๊ธฐ๊ณ ์ฌ๋ผ์ง๋ค.- ์ด๋ฒคํธ๋ฃจํ๋ ํ์คํฌํ์ ์ฝ์คํ์ ์ง์ผ๋ณด๊ณ ์๋ค๊ฐ, ์ฝ์คํ์ด ๋ชจ๋ ๋น๋ฉด ํ์คํฌํ์ ์๋ ์ฝ๋ฐฑ์ ์ฝ์คํ์ ์ฌ๋ฆฐ๋ค.
โ ํท๊ฐ๋ฆฌ๊ธฐ ์ฌ์ด ์์ (0์ด ํ์ ์คํ?)
0์ด ํ์ ์คํ = ์ง๊ธ ๋ฐ๋ก ์คํ??๐ค
→ ์๋!!๐ฑ
setTimeout
์ ์ํด ์ฝ๋ฐฑ(console.log("์ธ์ ์ถ๋ ฅ??")
)์ ํ์คํฌํ์ ์ฌ๋ผ๊ฐ ์๋ ์ํ!
์ฝ์คํ์ด ๋น์ด์์ด์ผ ์ฝ๋ฐฑ์ ์ฌ๋ฆด ์ ์๊ธฐ ๋๋ฌธ์, 1๊ณผ 2๊ฐ ์ถ๋ ฅ๋ ํ ์ฝ์คํ์ด ๋น๋ฉด "์ธ์ ์ถ๋ ฅ??"์ด ์ถ๋ ฅ๋๋ค.
๐์ฐธ๊ณ (๊ฐ์ฌํฉ๋๋ค)
'๐๊ณต๋ถ > JS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JavaScript] ์ด๋ฒคํธ ํ๋ก์ฐ(Event Flow) (0) | 2021.09.16 |
---|---|
[JavaScript] IIFE(Immediately Invoked Function Expression) (0) | 2021.09.15 |
[JavaScript] Arrow function vs Function (0) | 2021.07.28 |
[JavaScript] JS์ Implicit Return (์์์ ๋ฐํ) (0) | 2021.05.23 |
[JavaScript] innerText vs innerHTML (0) | 2020.11.06 |
๋๊ธ