์น ๋ธ๋ผ์ฐ์ ์์ ๋์ํ๋ ์ ์ผํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ธ ์๋ฐ์คํฌ๋ฆฝํธ์ ๋ํด ๊ฐ๋ตํ๊ฒ ์์๋ณด์.
์ํ์ฝ๋ฉ - ์คํ ์ปจํ ์คํธ
๋ชจ๋ ์ ์ธ์ด ์ฝ๋์ ์ ๋๋ก ๋์ด์ฌ๋ ค์ง ๊ฒ์ฒ๋ผ ๋์ํ๋ ์๋ฐ์คํฌ๋ฆฝํธ ๊ณ ์ ์ ํน์ง
์์์ ํ๋ฉด์์๋ก ์ ๋ฌ๋๋ ๋ฒ๋ธ๋ง๊ณผ ๊ทธ ๋ฐ๋ ๋ฐฉํฅ์ธ ์บก์ฒ๋ง์ ๋ํด ์์๋ณด์
์๋ฐ์คํฌ๋ฆฝํธ์์ this๋ ์๋ฐ์ ๋ฌ๋ฆฌ this์ ๋ฐ์ธ๋ฉ๋๋ ๊ฐ์ฒด์ ์ข ๋ฅ๊ฐ ํ ๊ฐ์ง๊ฐ ์๋๋ฉฐ, ํด๋น ๊ฐ์ฒด๋ ํจ์ ํธ์ถ ๋ฐฉ์์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋ ํน์ฑ(๋์ )์ ๊ฐ์ง๊ณ ์๋ค.
๋ฐํ๋ ๋ด๋ถํจ์๊ฐ ์์ ์ด ์ ์ธ๋์์ ๋์ ํ๊ฒฝ(์ค์ฝํ)์ ๊ธฐ์ตํ์ฌ ํด๋น ์ค์ฝํ ๋ฐ์์ ์ด๋ฅผ ์คํํ์์๋, ๋ด๋ถ ๋ณ์๋ฅผ ์ฐธ์กฐํ ์ ์๋ ํจ์๋ฅผ ๋งํ๋ค.
์ฝ๋ฐฑ ํจ์๋ผ๊ณ ํด์ ํน์ ํ ๋ฌธ๋ฒ์ ๊ฐ์ง๊ณ ์๋ ๊ฒ์ ์๋๋ฉฐ, ํธ์ถ ๋ฐฉ์์ ์ํด ๊ตฌ๋ถ๋๋ ํจ์์ด๋ค.
์ฝ๋ฐฑ ์ง์ฅ์ ํด๊ฒฐํ๊ธฐ ์ํด ๋ฑ์ฅํ Promise์ ๋ํด ์์๋ณด์.
์๋ฐ์คํฌ๋ฆฝํธ์ ๋น๋๊ธฐ ์ฒ๋ฆฌ ํจํด ์ค ๊ฐ์ฅ ์ต๊ทผ์ ๋์จ ๋ฌธ๋ฒ์ธ async์ await๋ฅผ ์์๋ณด์.
Call Stack์ด ๋น์ด์๊ณ , Task Queue์ ๋๊ธฐ ์ค์ธ ํจ์๊ฐ ์๋ค๋ฉด Event Loop๊ฐ FIFO ๋ฐฉ์์ผ๋ก Task Queue์ ๋๊ธฐ ์ค์ธ ํจ์๋ฅผ Call Stack์ผ๋ก ์ด๋์ํค๋ Event Loop
์๋ฐ์คํฌ๋ฆฝํธ๋ ๋ก ๋์ํ๋ ์ ์ ์ค์ฝํ์ ํน์ง์ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ, ์ด์ ๊ด๋ จํด ๋ง๋ค์ด์ง ๊ฒ์ด closure์ด๋ค ์ด์ ๋ํ ์๋ฆฌ๋ฅผ ์ดํด๋ณด์ ๐ ์์ ํ์ผ fn1 () ์ ์ง์ญ ๋ณ์๋ก l1์ด ์กด์ฌํ๊ณ , ์์ ์ค์ฝํ์ธ ์ ์ญ ์ปจํ ์คํธ์ l0๊ฐ ์กด์ฌํ๋ฏ๋ก ์ด๋ฅผ ์ฐธ์กฐํ
var๋ global scope๋ฅผ ๊ฐ์ง์ง๋ง, let, const๋ script scope๋ฅผ ๊ฐ์ง๋ค
๋ณ์๋ก ์ ์๋ ํจ์๊ฐ ๋ค๋ฅธ ํจ์์ ์ธ์๋ก ์ ๋ฌ๋์ด ์ ๋ฌ๋ ํจ์ ๋ด์์ ํธ์ถ๋๋ ํจ์๋ฅผ ์ง์นญ
then, catch ๋ fetch์ ๋ํ ์ฑ๊ณต์ ๋ฌด๋ฅผ ์๋ ค์ฃผ๋ ์กด์ฌ์ด๋ค
resolve -> then๊ณผ ์ฐ๊ฒฐ๋๋ฉฐ, reject -> catch์ ์ฐ๊ฒฐ๋๋ค
await๋ ๋ฐ๋์ async function ๋ด๋ถ์์ ํธ์ถํด์ผ ํจ์ ์ฃผ์ํ์
๊ฐ์ฅ ๋ฆ๊ฒ ๋๋๋ ์ผ์ ๋จผ์ ํ๊ฑฐ๋ ๊ฐ์ฅ ๋นจ๋ฆฌ ๋๋๋ ์ผ๋ง ๊ฐ์ ธ์ค๊ธฐ
Prototype์ ์ ์ ์์ด๋ค.
prototype๊ณผ proto์ ๋ํด ์์๋ณด์