JavaScript (6) - νΈμ΄μ€ν (Hoisting), λ³μ μ μΈμ μ€ν μμ
π νΈμ΄μ€ν (Hoisting): λμ΄ μ¬λ¦¬λ€. κ²μνλ€.
νΈμ΄μ€ν
μ λμ΄ μ¬λ¦°λ€λ λ»μ κ°κ³ μλ€.
JavaScript μμ νΈμ΄μ€ν
μ 무μμ μλ―Έν κΉ?
μ°μ μλ μ½λλ₯Ό μ΄ν΄λ³΄μ.
console.log(score); // λ³μ μ°Έμ‘°
var score; // λ³μ μ μΈλ¬Έ
λ³μ μ μΈλ¬Έ λ³΄λ€ λ³μλ₯Ό μ°Έμ‘°νλ μ½λκ° μμ μλ€.
μλ°μ€ν¬λ¦½νΈλ μΈν°ν리ν°μ μν΄ ν μ€μ© μμ°¨μ μΌλ‘ μ€νλλ―λ‘ console.log κ° κ°μ₯ λ¨Όμ μ€νλ κ²μ΄λ€.
μ°Έμ‘°μλ¬ ReferenceError κ° λ°μν κ²μΌλ‘ μμνμ§λ§,
undefinedκ° μΆλ ₯λλ€.
κ·Έ μ΄μ λ λ³μ μ μΈμ΄ μμ€μ½λκ° ν μ€μ© μμ°¨μ μΌλ‘ μ€νλλ μμ λ°νμ runtimeμ΄ μλλΌ κ·Έ μ΄μ λ¨κ³μμ λ¨Όμ μ€νλκΈ° λλ¬Έμ΄λ€.
λ³μ μ μΈμ μμ€μ½λμ μ΄λμ μλ μκ΄μμ΄ λ€λ₯Έ μ½λλ³΄λ€ κ°μ₯ λ¨Όμ μ€νλλ€.
λ³μ μ μΈλ¬Έμ΄ μ½λμ μ λλ‘ λμ΄ μ¬λ €μ§ κ²μ²λΌ λμνλ μλ°μ€ν¬λ¦½νΈ κ³ μ μ νΉμ§μ λ³μ νΈμ΄μ€ν
(variable hoisting)μ΄λΌ νλ€.
μ€μ λ‘ λμ΄μ¬λ €μ§ κ²μ΄ μλλΌ λ³μ μ μΈμ κ°μ₯ λ¨Όμ μ€ννκΈ° λλ¬Έμ λ§μΉ λμ¬μ¬λ €μ§ κ²μ²λΌ 보μΈλ€.
μΆμ²: μ΄μ λͺ¨, λͺ¨λμλ°μ€ν¬λ¦½νΈ Deep Dive, μν€λΆμ€(2020), p42-43.