SCOPE
μ€μ½νλ μ°Έμ‘° λμ μλ³μ(identifier, λ³μ, ν¨μμ μ΄λ¦κ³Ό κ°μ΄ μ΄λ€ λμμ λ€λ₯Έ λμκ³Ό ꡬλΆνμ¬ μλ³ν μ μλ μ μΌν μ΄λ¦)λ₯Ό μ°Ύμλ΄κΈ° μν κ·μΉμ΄λ€. μλ³μλ μμ μ΄ μ΄λμμ μ μΈλλμ§μ μν΄ μμ μ΄ μ ν¨ν λ²μλ₯Ό κ°λλ€.
μ΄λ¦μ΄ κ°μ λ³μ xκ° μ€λ³΅ μ μΈλμ΄μλ μμμ΄λ€. μ μμΌλ‘ μ μΈλ xλ μ΄λμμλ μ°Έμ‘°ν μ μμ§λ§ foo ν¨μ λ΄λΆμμ μ μΈλ xλ λ΄λΆμμλ§ μ°Έμ‘°ν μ μκ³ , ν¨μ μΈλΆμμλ μ°Έμ‘°ν μ μλ€. μ΄λ¬ν κ·μΉμ μ€μ½νλΌκ³ νλ€. λͺ¨λ λ³μλ μ€μ½νλ₯Ό κ°μ§λ€.
μ μ μ€μ½ν ( Global Scope ) : μ½λ μ΄λμμλ μ§ μ°Έμ‘° κ°λ₯
μ§μ μ€μ½ν ( Local Scope or Function-Level Scope) : ν¨μ μ½λ λΈλ‘μ΄ λ§λ μ€μ½νλ‘ ν¨μ μμ κ³Ό νμ ν¨μμμλ§ μ°Έμ‘° κ°λ₯
ν μΈμ΄λ λΈλ‘ λ 벨 μ€μ½ν ( block-level scope )λ₯Ό λ°λ₯Έλ€. νμ§λ§ μλ°μ€ν¬λ¦½νΈλ ν¨μ λ 벨 μ€μ½ν( function-level scope ) λ₯Ό λ°λ₯Έλ€. ν¨μ λ 벨 μ€μ½νλ ν¨μ μ½λ λΈλ‘ λ΄μμ μ μΈλ λ³μλ ν¨μ μ½λ λΈλ‘λ΄μμλ§ μ ν¨νλ©°, ν¨μ μΈλΆμμλ μ ν¨νμ§ μλ€.
λ¨, ECMAScript 6μμ λμ
λ let
ν€μλλ₯Ό μ¬μ©νλ©΄ λΈλ‘ λ 벨 μ€μ½νλ₯Ό μ¬μ©ν μ μλ€.
μ μ λ³μλ μ μ κ°μ²΄(Global Object)μΈ window
μ νλ‘νΌν°μ΄λ€.
μ μ λ³μμ μ¬μ©μ λ³μ μ΄λ¦μ΄ μ€λ³΅λ μ μμΌλ©°, μλμΉ μμ μ¬ν λΉμ μν μν λ³νλ‘ μ½λλ₯Ό μμΈ‘νκΈ° μ΄λ ΅κ² λ§λλ―λ‘ μ¬μ©μ μ΅μ ν΄μΌνλ€.
Lexical Scope
lexical scopeλ ν¨μλ₯Ό μ΄λμ νΈμΆνλμ§κ° μλλΌ μ΄λμ μ μΈνμλμ§μ λ°λΌ κ²°μ λλ€. μλ°μ€ν¬λ¦½νΈλ lexical scopeλ₯Ό λ°λ₯΄λ―λ‘ ν¨μλ₯Ό μ μΈν μμ μ μμ μ€μ½νκ° κ²°μ λλ€.
lexical scopeλ₯Ό λ°λ₯΄λ―λ‘, foo()
, bar()
νΈμΆμ 1μ΄ μΆλ ₯λλ κ²μ νμΈν μ μλ€.
μ΅μνμ μ μλ³μ μ¬μ©
μλ°μ€ν¬λ¦½νΈλ λ³μλͺ μ μ€λ³΅μ νμ©νλ―λ‘, μ μλ³μμ 무λΆλ³ν μ¬μ©μ λ¬΄μ² μννλ€. μ μ λ³μλ₯Ό λ°λμ μ¬μ©ν΄μΌν μ΄μ κ° μλ€λ©΄, μ§μλ³μλ₯Ό μ¬μ©νκ³ , λ³μμ λ²μμΈ μ€μ½νλ μ’μμλ‘ μ’λ€.
μ μλ³μλ₯Ό μ΅μννλ λ°©λ² μ€ νλλ μ μλ³μ κ°μ²΄λ₯Ό νλ μμ±ν΄μ μ¬μ©νλ κ²μ΄λ€.
μ¦μ μ€ν ν¨μ
μ¦μ μ€ν ν¨μ(IIFE, Immediately-Invoked Function Expression)λ₯Ό μ¬μ©νλ©΄, μ μλ³μ μ¬μ©μ μ΅μ ν μ μλ€.
μ΄ λ°©λ²μ μ¬μ©νλ©΄ μ μλ³μλ₯Ό λ§λ€μ§ μμΌλ―λ‘ λΌμ΄λΈλ¬λ¦¬ λ±μμ μμ£Ό μ¬μ©λλ©°, μ¦μ μ€ν ν¨μλ μ¦μ μ€νλκ³ κ·Έ ν λ°λ‘ μ¬λΌμ§λ€.
μ°Έμ‘° νμ΄μ§
Last updated
Was this helpful?