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