π νΈμ΄μ€ν
νΈμ΄μ€ν (hoisting)μ JavaScriptμμ λ³μ λ° ν¨μ μ μΈμ΄ μ€μ½νμ μ΅μλ¨μΌλ‘ λμ΄μ¬λ €μ§λ κ²μ μλ―Ένλ€. μ΄λ μ½λμμ λ³μλ ν¨μλ₯Ό μ μΈνκΈ° μ΄μ μλ ν΄λΉ λ³μλ ν¨μμ μ κ·Όν μ μλ€λ κ²μ μλ―Ένλ€.
λ³μ νΈμ΄μ€ν μ λ³μκ° μ μΈλκΈ° μ μ λ³μκ° μ΄λ―Έ μ‘΄μ¬νλ κ²μ²λΌ λμνλ νμμ μ€λͺ νλ€. μ¦, λ³μλ₯Ό μ μΈνκΈ° μ μ λ³μλ₯Ό μ¬μ©ν μ μμ΅λλ€. κ·Έλ¬λ μ΄λ¬ν νΈμ΄μ€ν μ λ³μμ μ΄κΈ°ν λΆλΆκΉμ§ λμ΄μ¬λ €μ§μ§ μκ³ λ³μμ ν λΉ(μ΄κΈ°ν)μ κ·Έ μμΉμ κ·Έλλ‘ λ¨λλ€.
ν¨μ νΈμ΄μ€ν μ ν¨μ μ μΈμ΄ μ€μ½νμ μ΅μλ¨μΌλ‘ λμ΄μ¬λ €μ§λ κ²μ μλ―Ένλ€. μ¦ ν¨μλ₯Ό μ μΈνκΈ° μ μλ ν¨μλ₯Ό νΈμΆν μ μλ€.
console.log(number)
var number = 10
console.log(number)
μ μ½λλ₯Ό μ€νν κ²½μ° νΈμ΄μ€ν μ μν΄
undefined
10
μ΄λ κ² μΆλ ₯μ΄ λλ€.
νμ§λ§ varμ λ€λ₯΄κ² letμ΄λ constλ‘ μ μΈλ λ³μλ undefinedλ‘ μ΄κΈ°νλμ§ μλλ€.
π TDZ
TDZ(Temporal Dead Zone)λ JavaScriptμμ let λ° const ν€μλλ‘ μ μΈλ λ³μμ λ νΉν λμμ μ€λͺ νλ μ©μ΄μ΄λ€.
TDZλ λ³μκ° μ μΈλμμ§λ§ μμ§ μ΄κΈ°νλμ§ μμ μνλ₯Ό μλ―Ένλ€. μ¦, λ³μκ° μ μΈλ μ΄ν μ΄κΈ°νλκΈ° μ κΉμ§ λ³μλ₯Ό μ¬μ©ν μ μλ€.
console.log(name) // ReferenceError: Cannot access 'name' before initialization
let name = 'MINI'
μμ μ½λμμλ nameμ μ¬μ©νκΈ° μ μ μ μΈλμμ§λ§ μ΄κΈ°νλμ§ μμκΈ° λλ¬Έμ ReferenceErrorκ° λ°μνλ€. μ΄λ TDZμ μν κ²μ΄λ€. λ³μκ° μ μΈλμλ§μ TDZμ μ§μ νλ©°, μ΄κΈ°νλκΈ° μ κΉμ§λ TDZμμ λ²μ΄λμ§ λͺ»ν©λλ€.
TDZλ letκ³Ό constλ‘ μ μΈλ λ³μμμλ§ λ°μνλ€. var ν€μλλ‘ μ μΈλ λ³μλ νΈμ΄μ€ν μ μν΄ μ μΈ λ° μ΄κΈ°νκ° λμμ μ΄λ£¨μ΄μ§λ©°, undefinedλ‘ μ΄κΈ°νλλ―λ‘ TDZκ° λ°μνμ§ μλλ€. μ΄λ λ― TDZλ μ½λμ μμ μ±μ λμ΄κ³ μ€μλ₯Ό μ€μ΄λ λ° λμμ΄ λλ€.
'JavaScript > Theory' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[JavaScript] μ½λ°± ν¨μ(Callback Function) (0) | 2024.05.24 |
---|---|
[JavaScript] JSON κΈ°μ΄ (0) | 2024.01.16 |
[JavaScript] JavaScript, jQuery, AJAX (0) | 2024.01.15 |
λκΈ