μ€μ½ν Scope
μ€μ½νλ μλ³μ(λ³μ, ν¨μ, ν΄λμ€ μ΄λ¦) μ κ·Ό κ·μΉμ λ°λ₯Έ μ ν¨ λ²μμ λλ€.
μ¦, κ°λ¨νκ² λ³μλ₯Ό μ°Έμ‘°ν μ μλ μ ν¨ν λ²μλΌκ³ μκ°νλ©΄ λ©λλ€.
μ€μ½νλ λΈλ { } νΉμ ν¨μμ μν΄ λλ μ§λλ€. (λΈλμ΄λΌ νλ©΄, if(){}, for(){} ... λ±λ ν¬ν¨ν©λλ€.)
μλ μμλ₯Ό 보면, λΈλ μμμλ λΈλ λ°μ μλ k λ λΈλ μμ μλ x λ μ μΆλ ₯λ©λλ€.
κ·Έλ¬λ λΈλ λ°μμ λΈλ μμ μλ x λ₯Ό μΆλ ₯νλ €κ³ νλ©΄ μλ¬κ° λ°μν©λλ€.
ν¨μ λ°μμ μ μλ k λ₯Ό μ μ λ³μ, μ μ μ€μ½ν ( μ 체μμ μ κ·Ό μ ν¨)
ν¨μ λ΄μμ μ μλ x λ₯Ό μ§μ λ³μ, μ§μ μ€μ½ν λΌκ³ ν©λλ€. (μ§μ λ΄μμλ§ μ κ·Ό μ ν¨)
λ°(μ μ) μμλ μ(μ§μ)μ λ³μλ₯Ό μ°Έμ‘°ν μ μμ§λ§, μ(μ§μ)μμ λ°(μ μ)μ λ³μλ₯Ό μ°Έμ‘°ν μ μμ΅λλ€.
μ΄κ² μμ£Ό μ€μν 컨μ μ λλ€!
λ€λ₯Έ μΈμ΄μμλ scope κ°λ μ λμΌνκΈ°μ μ¬κΈ°μ μ μ΄ν΄νκ³ λμ΄κ°μΌ ν©λλ€.
let k = 'happy world!';
function exampleFunction() {
let x = "good morning!";
console.log(x); // good morning! μΆλ ₯λ©λλ€.
console.log(k); // happy world! μΆλ ₯λ©λλ€.
}
console.log(x); // μλ¬ λ°μ
μ μ΄λ° λ²μκ° νμν κΉμ? ν¬κ² 2κ°μ§ μ΄μ κ° μμ΅λλ€.
μ΄λ¦ μΆ©λ λ°©μ§μ λ©λͺ¨λ¦¬ μ μ½μ μν΄ νμ ν©λλ€.
κ΄νΈλ₯Ό ν΅ν΄ scope λ₯Ό λλ΄μΌλ κ°μ λ³μμ μ΄λ¦μ μ¨λ μλ¬κ° μ λ©λλ€. νμ§λ§, μ¬μ©ν λ λͺ μ¬ν΄μΌ ν κ²μ΄ μμ΅λλ€.
let a = 10; // π
{
let a = 1; // ππ
{
let b = 2;
console.log(a); // π 1
}
console.log(a); // ππ 1
console.log(b); // μλ¬ b is not defined
}
μ§μ μ€μ½νμμ λ³μλ₯Ό μ°Έμ‘°ν λ, μ΄λ€ μμΌλ‘ λ³μλ₯Ό μ°Έμ‘°νλμ§ μμλ₯Ό λ¨Όμ μμμΌ ν©λλ€.
μλ₯Ό λ€μ΄, βοΈ μ€μμ a λ₯Ό μΆλ ₯νλ €κ³ ν λ, μ§μ μ€μ½νλ μ μ μ€μ½νλ₯Ό μ°Έμ‘° ν μ μμΌλ λ°λ‘ μ μ μ€μ½νλ‘ κ°μ a λ₯Ό μ°Ύλ κ²μ΄ μλλλ€. βοΈ μ€μ κ°μ₯ λ¨Όμ μμ μ΄ μν μ€μ½νμμ a λ₯Ό μ°Ύμ΅λλ€. λ§μ½ μμ μ΄ μν κ³³μμ aκ° μλ€λ©΄, λ°λ‘ μ μ€μ½νππ λ‘ κ°λλ€. μ¦, μμ μ ν¬ν¨νκ³ μλ μ€μ½νλ‘ κ°λ κ²μ λλ€. (μ΄λ κ² μ€μ½νλΌλ¦¬ μ°κ²°λμ΄ μλ κ²μ μ€μ½ν μ²΄μΈ μ΄λΌκ³ ν©λλ€.)
μ΄λ° λ§₯λ½μμ 보면 βοΈβοΈ μ€μ μΆλ ₯ κ°μ΄ μ 10μ΄ μλλΌ 1μΈμ§ μ μ μμ΅λλ€. μμ μ΄ μν μ€μ½ν(λΈλ) μμ aππ λ₯Ό μ°ΎμκΈ° λλ¬Έμ μ μ μ€μ½νπ κΉμ§ κ°μ κ°μ μ°Έμ‘°ν νμκ° μμ΅λλ€.
κ·Έλ¦¬κ³ λΈλμ΄ λλκ³ λ³μκ° λ μ΄μ νμ μκ² λλ©΄ κ°λΉμ§ 컬λ ν° κ° λ³μλ₯Ό μμ ν©λλ€. λλ¬Έμ λ©λͺ¨λ¦¬ λλΉλ₯Ό λ°©μ§ν μ μμ΅λλ€.
κ°λΉμ§ 컬λ ν° (Garbage Collector)λ λΈλμμ μ°μμ λ€ν λ³μλ₯Ό μμ ν΄μ£Όκ±°λ κ°μ²΄λ₯Ό μ°Έμ‘°νκ³ μλ λ³μκ° μμ λ, κ·Έ κ°μ²΄λ νμ μλ€κ³ νλ¨νμ¬ μμ ν©λλ€.
μ€μ½νλ μ λ§ μ€μν κ°λ μΈ λ§νΌ μ ννκ² μκ³ μμ΄μΌ ν©λλ€.
μ°Έκ³ μλ£
https://developer.mozilla.org/ko/docs/Glossary/Scope
μ€μ½ν - μ©μ΄ μ¬μ | MDN
νμ¬ μ€νλλ 컨ν μ€νΈλ₯Ό λ§νλ€. μ¬κΈ°μ 컨ν μ€νΈλ κ°κ³Ό ννμμ΄ "νν"λκ±°λ μ°Έμ‘° λ μ μμμ μλ―Ένλ€. λ§μ½ λ³μ λλ λ€λ₯Έ ννμμ΄ "ν΄λΉ μ€μ½ν"λ΄μ μμ§ μλ€λ©΄ μ¬μ©ν μ μλ€.
developer.mozilla.org
'JavaScript' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
JS μ€ν 컨ν μ€νΈμ μ½ μ€ν (0) | 2022.08.11 |
---|---|
JS νΈμ΄μ€ν κ³Ό TDZ (0) | 2022.08.11 |
JS Equality operators == === != !== (0) | 2022.08.11 |
JS undefined κ³Ό null λΉκ΅ (0) | 2022.08.11 |
JS λμ¨ν νμ μ λμ μΈμ΄ (0) | 2022.08.11 |