ν΄λ‘μ λ
ν¨μμ κ·Έ ν¨μκ° μ μΈλ λΉμμ λ μ컬 νκ²½(Lexical Environment)μ κΈ°μ΅νλ κΈ°λ₯μ λλ€.
μ½κ² λ§ν΄,
**"ν¨μκ° μ μΈλ λΉμμ μΈλΆ λ³μλ₯Ό κ³μ κΈ°μ΅νλ©΄μ μ¬μ©ν μ μλ ν¨μ"**μ λλ€.
π¦ λΉλ° κΈκ³ μμ
μΈλΆμμλ κΈκ³ μ λ΄μ©μ μ§μ λ³Ό μ μμ§λ§,
νΉμ ν€(ν¨μ)λ₯Ό κ°μ§ μ¬λλ§ κΈκ³ μ 물건μ κΊΌλΌ μ μμ΄μ.
μ΄μ²λΌ ν΄λ‘μ λ ν¨μ μμ λ³μλ€μ μΈλΆμμ μ§μ μ κ·Όνμ§ λͺ»νκ² μ¨κΈ°κ³ ,
νΉμ ν¨μ(λ΄λΆ ν¨μ)λ₯Ό ν΅ν΄μλ§ μ κ·Όν μ μκ² ν΄μ€λλ€.
| λͺ©μ | μ€λͺ |
|---|---|
| β μν μ μ§ | ν¨μκ° λ§μΉ κ°μ²΄μ²λΌ μμ μ μνλ₯Ό κΈ°μ΅ν¨ |
| π λ°μ΄ν° μλ | μΈλΆμμ μ§μ μ κ·Όν μ μλ λ³μλ₯Ό λ§λ€κ³ , λ΄λΆ ν¨μλ‘λ§ μ κ·Ό κ°λ₯ |
| β»οΈ λͺ¨λν / μ¬μ¬μ© | κ³΅ν΅ λμμ κΈ°μ΅ν ν¨μλ€μ λ°λ³΅ μ¬μ© κ°λ₯ |
function outer() {
let count = 0;
return function inner() {
count++;
console.log("νμ¬ count:", count);
};
}
const counter = outer(); // outerλ μ€νλμ§λ§ innerλ λ°νλ¨
counter(); // νμ¬ count: 1
counter(); // νμ¬ count: 2
counter(); // νμ¬ count: 3
π countλ outer ν¨μ λ΄λΆμ λ³μμ΄μ§λ§,
inner()ν¨μκ° μ΄λ₯Ό κΈ°μ΅νκ³ κ³μ μ κ·Όνκ³ μμ΅λλ€.μ΄μ²λΌ μΈλΆ ν¨μλ μ€νμ΄ λλ¬μ΄λ λ΄λΆ ν¨μκ° μ°Έμ‘° μ€μ΄λ©΄ λ³μλ μ¬λΌμ§μ§ μμ΅λλ€.
ν΄λ‘μ λ λ€μ μ‘°κ±΄μ΄ λͺ¨λ λ§μ‘±λ λ μμ±λ©λλ€: