νΈμ΄μ€ν (Hoisting)μ΄λ?
"Hoist"λΌλ λ¨μ΄λ λ¨μν λμ΄μ¬λ¦¬λ€ λλ λ€μ΄μ¬λ¦¬λ€ λΌλ λ§μ λ»νλ€. μ΄ λ¨μ΄μ λ»μ²λΌ JavaScriptμ νΈμ΄μ€ν μ ν¨μ, λ³μ λλ ν΄λμ€μ μ μΈλ€μ λͺ¨λ λμ΄μ¬λ €μ μ ν¨ λ²μμ μ΅μλ¨μ μ μΈνλ JavaScriptμ κ°λ λλ λμμ΄λ€.
μ¬κΈ°μ Hoistingμ΄λ μ§μ 물리μ μΌλ‘ λμ΄μ¬λ¦¬λκ±Έ μλ―Ένλκ² μλλΌ, μλ°μ€ν¬λ¦½νΈ μμ§μ΄ μ€ννκΈ° μ μ μ 체 μ½λλ₯Ό ν λ² μ€μΊνμ¬ λ³μμ ν¨μ μ μΈμ λ©λͺ¨λ¦¬μ μ μ₯νλλ° μ΄λ‘ μΈν΄ μ½λ μμμ μ μΈ μ μ λ³μλ ν¨μλ₯Ό μ°Έμ‘°ν μ μκ² λλκ±Έ μλ―Ένλ€.
ν¨μ(Function) νΈμ΄μ€ν
printHello()
// hello
function printHello(){
console.log('hello')
}
ν¨μ μ μΈλ¬Έμ κ²½μ°, μλ°μ€ν¬λ¦½νΈμ νΈμ΄μ€ν μΌλ‘ μΈν΄ μ½λλ₯Ό ꡬνν μμΉμ κ΄κ³μμ΄ λΈλΌμ°μ κ° μλ°μ€ν¬λ¦½νΈλ₯Ό ν΄μ ν λ 맨 μ΅μλ¨μΌλ‘ λμ΄ μ¬λ €μ§λ€.
ν¨μλ₯Ό μ€ννλ printHello()
κ° ν¨μλ₯Ό ν λΉνλ function printHello() {...}
λ³΄λ€ μμ μμ±λμ΄ μμΌλ©΄ νΈμ΄μ€ν
κ°λ
μμ΄ μ΄λ‘ μ μΌλ‘ μκ°ν κ²½μ° printHello()
λ μ€νλμ§ μμμΌ νλ€.
νμ§λ§ Hoisting κ°λ
μ μ μ©νκ² λλ©΄ μ΅μλ¨μ printHello()
λ μ μμ μΌλ‘ μ€νλλ€.
λ³μ(Variable) νΈμ΄μ€ν
JavaScriptμμλ var
, let
λ° const
λ³μλ₯Ό μ¬μ©νμ¬ μ μΈν μ μμΌλ©° κ°μ λ€λ₯Έ νΈμ΄μ€ν
κ°λ
μ΄ μ μ©λλ€.