π μ€μ½ν, νΈμ΄μ€ν , TDZ
π 1. μ€μ½νμ μ μ
μ°Έμ‘° λμ μλ³μ(identifier, λ³μ, ν¨μμ μ΄λ¦κ³Ό κ°μ΄ μ΄λ€ λμμ λ€λ₯Έ λμκ³Ό ꡬλΆνμ¬ μλ³ν μ μλ μ μΌν μ΄λ¦)λ₯Ό μ°Ύμλ΄κΈ° μν κ·μΉμ΄λ€.
μλ°μ€ν¬λ¦½νΈλ μ΄ κ·μΉλλ‘ μλ³μλ₯Ό μ°Ύλλ€.
π 1-1 . μ€μ½νμ ꡬλΆ
βΆοΈ μλ°μ€ν¬λ¦½νΈμμ μ€μ½νλ₯Ό ꡬλΆν΄λ³΄λ©΄ λ€μκ³Ό κ°μ΄ 2κ°μ§λ‘ λλ μ μλ€.
βΆοΈ λͺ¨λ λ³μλ μ€μ½νλ₯Ό κ°λλ€. λ³μμ κ΄μ μμ μ€μ½νλ₯Ό ꡬλΆνλ©΄ λ€μκ³Ό κ°μ΄ 2κ°μ§λ‘ λλ μ μλ€.
μ μ λ³μ (Global variable)
μ μμμ μ μΈλ λ³μμ΄λ©° μ΄λμλ μ°Έμ‘°ν μ μλ€.
μ§μ λ³μ (Local variable)
μ§μ(ν¨μ) λ΄μμ μ μΈλ λ³μμ΄λ©° κ·Έ μ§μκ³Ό κ·Έ μ§μμ νλΆ μ§μμμλ§ μ°Έμ‘°ν μ μλ€.
λ³μλ μ μΈ μμΉ(μ μ λλ μ§μ)μ μν΄ μ€μ½νλ₯Ό κ°μ§κ² λλ€. μ¦, μ μμμ μ μΈλ λ³μλ μ μ μ€μ½νλ₯Ό κ°λ μ μ λ³μμ΄κ³ , μ§μ(μλ°μ€ν¬λ¦½νΈμ κ²½μ° ν¨μ λ΄λΆ)μμ μ μΈλ λ³μλ μ§μ μ€μ½νλ₯Ό κ°λ μ§μ λ³μκ° λλ€.
μ μ μ€μ½νλ₯Ό κ°λ μ μ λ³μλ μ μ(μ½λ μ΄λμλ μ§)μμ μ°Έμ‘°ν μ μλ€. μ§μ(ν¨μ λ΄λΆ)μμ μ μΈλ μ§μ λ³μλ κ·Έ μ§μκ³Ό κ·Έ μ§μμ νλΆ μ§μμμλ§ μ°Έμ‘°ν μ μλ€.
π 2. νΈμ΄μ€ν μ μ μ
π 2-1. νΈμ΄μ€ν κ°λ³κ² μ§μ΄λ³΄κΈ°
νΈμ΄μ€ν μ ν΅ν΄ μ μΈκ³Ό ν λΉμ λΆλ¦¬νλ€.
λͺ¨λ λ³μ/ν¨μ μ μΈμ ν΄λΉ μ€μ½νμ μ΅μλ¨μΌλ‘ λμ΄μ¬λ¦° λ― ν νμμ΄ μΌμ΄λλ€.
π₯ μ¬κΈ°μ μ£Όμν μ μ
λͺ¨λ λ³μ, ν¨μ μ μΈμ μ½λ μμμ μ€μ λ‘, 물리μ μΌλ‘ μ΅μλ¨μΌλ‘ λμ΄μ¬λ¦¬λ κ²μ΄ μλ λ΄λΆμ μΌλ‘ λμ΄μ¬λ¦¬λ κ²μ΄λ€.
λ©λͺ¨λ¦¬μ λ³ν λν μλ€.
π 2-2. λ΄λΆμ μΌλ‘ μ΄λ€ μΌμ΄ λ°μνλκ°?
λͺ¨λ μ μΈμ΄ μ°μ μ μΌλ‘ μ€ν 컨ν μ€νΈ(λ©λͺ¨λ¦¬)μ μ μ₯λλ€
μ΄κ² λλ¬Έμ μ μΈμ΄ λμ΄μ¬λ €μ§λ€λ ννμ΄ λμ¨ κ² κ°λ€.
μ€μ λ‘ λ¬Όλ¦¬μ μΌλ‘ μ¬λ €μ§λ κ²μ΄ μλλΌ λ΄λΆμ μΌλ‘ μ λ° λ°©μμ μν΄ μ½λκ° λμ΄μ¬λ €μ§ λ―ν νμμ΄ λνλλ€κ³ 보면 λ κ² κ°λ€.
κ·Έλ¦¬κ³ κ³§ μ΄κ²μ΄ νΈμ΄μ€ν (hoisting)μ΄λ€.
π 2-3. νΈμ΄μ€ν μ λν μλͺ»λ μμ
βΆοΈ νΈμ΄μ€ν μ var μ μΈλ§ μΌμ΄λλ€? Nope!! β
"varμ μ΄μ©ν λ³μ μ μΈμ νΈμ΄μ€ν μ΄ μΌμ΄λμ§λ§, const,letμ μ΄μ©ν λ³μ μ μΈμ νΈμ΄μ€ν μ΄ μΌμ΄λμ§ μλλ€" λΌλ μ λ³΄κ° λ§μ΄ λμ¨λ€.
μ κ²μ μλͺ»λ ννμ΄λ€... π
var, const, let μκ΄μμ΄ λͺ¨λ μ μΈμμ νΈμ΄μ€ν μ΄ μ΄λ£¨μ΄μ§λ€.
1-1 μμ λ΄λΆμ μΌλ‘ λͺ¨λ μ μΈμ΄ μ°μ μ μΌλ‘ λ©λͺ¨λ¦¬μ μ μ₯λλ€κ³ νμλλ°, μ¬κΈ°μ μ§μ€ν΄μΌνλ€.
νΈμ΄μ€ν μ λͺ¨λ λ³μ/ν¨μ μ μΈμ λ΄λΆμ μΌλ‘ μ΅μλ¨μΌλ‘ λμ΄μ¬λ¦¬λ κ²μ΄κ³ , λ΄λΆμ μΌλ‘λ λͺ¨λ μ μΈμ΄ μ°μ μ μΌλ‘ λ©λͺ¨λ¦¬μ μ μ₯λλ€λ κ²μ΄λ€.
μ΄ λ§μ var, const, let μκ΄μμ΄ λͺ¨λ μ μΈμμ νΈμ΄μ€ν μ΄ μΌμ΄λλ€λ κ²μ μκΈ°νλ κ²μ΄λ€.
π₯ κ·Έλ λ€λ©΄ μ const, letμ νΈμ΄μ€ν μ΄ μΌμ΄λμ§ μλ κ² μ²λΌ 보μμκΉ? μμ μ½λλ₯Ό νμΈν΄λ³΄μ.
mynameμ μ°μ΄λ³΄λ©΄ μλ¬κ° λμ§ μκ³ undefinedκ° μΆλ ₯μ΄ λκ³ , myname2λ₯Ό μ°μ΄λ³΄λ©΄ λ νΌλ°μ€ μλ¬κ° λλ€.
μ΄ κ²°κ³Όλ₯Ό 보면 λ§μΉ var μ μΈμ νΈμ΄μ€ν μ΄ μΌμ΄λ¬κΈ° λλ¬Έμ μλ¬κ° λμ§μκ³ const, let μ μΈμ νΈμ΄μ€ν μ΄ μΌμ΄λμ§ μκΈ° λλ¬Έμ μλ¬κ° λ°μνλ€κ³ μκ°ν μλ μλ€. βνμ§λ§ μλλ€.β
varκ³Ό const, let κ°μ κ²°μ μ μΈ μ°¨μ΄ λλ¬Έμ μ΄λ¬ν νμμ΄ λ°μνλ€.μ°¨μ΄λ₯Ό μμ보μ.
π 2-4. varκ³Ό const, letμ μ°¨μ΄
π 2-5. letμ μ λ νΌλ°μ€ μλ¬κ° λλκ°?
μμ μ½λλ₯Ό λλ €λ³΄λ©΄ letμΌλ‘ μ μΈν λ³μλ λ νΌλ°μ€ μλ¬κ° λ¬λ€.
λ³μκ° μ΄κΈ°ν λμ§ μμΌλ©΄ λ³μλ₯Ό μ°Έμ‘°ν μ μλ€
π 2-6. μ’ ν©
const, letμ νΈμ΄μ€ν μ΄ μΌμ΄λ ν μ΄λ ν κ°μΌλ‘λ μ΄κΈ°νκ° λμ§ μμΌλ©°, μ΄κΈ°νλμ§ μμ λ³μλ μ°Έμ‘°ν μ μκΈ° λλ¬Έμ console.log( ) μ½λλ₯Ό μ€ννμ§ λͺ»νκ³ λ νΌλ°μ€ μλ¬κ° λλ κ²μ΄λ€.
μ΄λ¬ν νμ λλ¬Έμ const, letμ νΈμ΄μ€ν μ΄ λμ§ μλλ€λ μ€ν΄λ₯Ό λΆλ¬μλ κ²μ΄λ€.
π 3. TDZ ( Temporal Dead Zone )μ μ μ
π μΌμμ μ¬κ°μ§λ β
let λλ constλ‘ λ³μλ₯Ό μ μΈνμ λ, μ μΈ μ΄μ μ μλ³μλ₯Ό μ°Έμ‘°ν μ μλ ꡬμ
νΈμ΄μ€ν μΌλ‘ λ³μμ μ μΈμ΄ μ΄λ£¨μ΄μ‘μ§λ§ λ³μμ μ΄κΈ°νκ° μ΄λ£¨μ΄μ§μ§ μμ μ§μ
λ³μλ₯Ό μ°Έμ‘°ν μ μλ μ§μ