Event Loop
μλ°μ€ν¬λ¦½νΈλ λ¨μΌ μ€λ λ (Single Thread) κΈ°λ°μ΄κΈ° λλ¬Έμ μ΄λ²€νΈ 루νλ₯Ό μ¬μ©νμ¬ μμ μ μ€μΌμ₯΄λ§ νλ€.
μ΄κ²μ μκ°μ νλ¦μ λ°λΌ μ½λμ μνμ μ²λ¦¬νλ©° κ·Έλλ§λ€ JS Engine μ μ€ννλ©° μλ κ·Έλ¦Όκ³Ό κ°μ κ΅¬μ‘°μ  νΉμ±μ λλ€.

μ΄μ λ°λ₯Έ μ΄λ²€νΈ 루νλ λ¨ νκ°μ§μ μλ¬΄λ§ κ°μ§κ³  μλλ° Call Stack μ Callback Queue μ κ°μνλ κ² μ΄λ€.
λ§μ½ μ½μ€νμ΄ λΉμ΄ μμΌλ©΄ μ΄λ²€νΈ 루νμμλ νμμ 첫λ²μ§Έ μ΄λ²€νΈλ₯Ό κ°μ Έλ€κ° Call Stack μ λ°μ΄λ£λκ²μ΄λ©° κ²°κ³Όμ μΌλ‘ ν΄λΉ μ΄λ²€νΈκ° μ€νλλ κ²μ΄λ€.

λνμ μΈ μλ‘ setTimeout λμμ΄ μλ€.
setTimeout μ΄ μλμΌλ‘ μ½λ°±μ μ΄λ²€νΈ 루ν ν μμ λ£μ΄μ£Όμ§λ μλλ€. setTimeout μ νμ΄λ¨Έλ₯Ό μ€μ νλ©° νμ΄λ¨Έκ° λ§λ£λλ©΄ νΈμ€ν
 νκ²½μ΄ μ½λ°±μ μ΄λ²€νΈ 루νμ μμΉμμΌ λ―Έλμ Tick μ΄ μ΄λ₯Ό κ°μ Έλ€ μνν  μ μλλ‘ νλ€.
setTimeout(() => {
  alert('Callback Func');
}, 1000);
μ¦ μμ μ½λλ setTimeout μ 1,000ms νμ μ€νμ΄ μλ 1,000ms μ΄νμ Callback Queue μ μΆκ°λλ κ²μ΄λ€.

- μ½μ€ν, μ½λ°±ν λ±μ λͺ¨λ κ²μ΄ λΉμμ Έμλ€.
 console.log('Hi')κ° μ½μ€νμ μΆκ°λμλ€.console.log('Hi')κ° μ€νλλ€.console.log('Hi')κ° μ½ μ€νμμ μ κ±°λμλ€.setTimeout(function cb1() {...})κ° μ½μ€νμ μΆκ°λμλ€.setTimeout(function cb1() {...})μ΄ μ€νλλ©΄μ λΈλΌμ°μ κ° μΉ API μ μΌνμΈ νμ΄λ¨Έλ₯Ό μμ±νλ€.
μ΄ νμ΄λ¨Έλ μΉ΄μ΄νΈ λ€μ΄μ μ²λ¦¬νλ€.setTimeout(function cb1() {...})κ° μ€νμ΄ μλ£λκ³ μ½μ€νμμ μ κ±°λλ€.console.log('Bye')κ° μ½μ€νμ μΆκ°λμλ€.console.log('Bye')μ΄ μ€νλμλ€.console.log('Bye')κ° μ½μ€νμμ μ κ±°λμλ€.- νμ΄λ¨Έκ° μλ£λλ©΄ 
cb1μ μ½λ°±νμ λ°μ΄ λ£λλ€. - μ΄λ²€νΈ 루νκ° 
cb1μ μ½λ°±νμμ κ°μ Έλ€ μ½μ€νμ λ°μ΄ λ£λλ€. cb1μ΄ μ€νλκ³console.log('cb1')μ΄ μ½μ€νμ μΆκ°λλ€.console.log('cb1')μ΄ μ€νλλ€.console.log('cb1')μ΄ μ½ μ€νμμ μ κ±°λλ€.cb1μ΄ μ½μ€νμμ μ κ±°λλ€.
β Performance Memory Leak β