λͺ¨λ μλ³μ(λ³μ μ΄λ¦, ν¨μ μ΄λ¦, ν΄λμ€ μ΄λ¦ λ±)λ μμ μ΄ μ μΈλ μμΉμ μν΄ λ€λ₯Έ μ½λκ° μλ³μ μμ μ μ°Έμ‘°ν μ μλ μ ν¨ λ²μκ° κ²°μ λλ€. μ΄λ₯Ό
μ€μ½ν
λΌ νλ€. μ¦, μ€μ½νλ μλ³μκ° μ ν¨ν λ²μλ₯Ό λ§νλ€.
μ€μ½ν(μ ν¨ λ²μ)
λ₯Ό ν΅ν΄ μλ³μμΈ λ³μ μ΄λ¦μ μΆ©λμ λ°©μ§νμ¬ κ°μ μ΄λ¦μ λ³μλ₯Ό μ¬μ©ν μ μκ² νλ€.μ€μ½ν
λ΄μμ μλ³μλ μ μΌν΄μΌ νμ§λ§ λ€λ₯Έ μ€μ½νμλ κ°μ μ΄λ¦μ μλ³μλ₯Ό μ¬μ©ν μ μλ€.
var x = 'global';
function foo() {
var x = 'local';
console.log(x); // local
}
foo()
console.log(x); // global
// varλ ν¨μ μ€μ½νλ₯Ό κ°λλ€.
μ½λμ λ°κΉ₯ μμκ³Ό foo ν¨μ λ΄λΆμ κ°μ μ΄λ¦μ κ°λ x λ³μλ₯Ό μ μΈνκ³ λ κ°μ λ³μ μ€μμ μ΄λ€ λ³μλ₯Ό μ°Έμ‘°ν΄μΌ ν κ²μΈμ§λ₯Ό κ²°μ μ΄λ₯Ό
μλ³μ κ²°μ
μ΄λΌ νλ©° μλ°μ€ν¬λ¦½νΈμμ§μ μ€μ½νλ₯Ό ν΅ν΄ μ΄λ€ λ³μλ₯Ό μ°Έμ‘°ν΄μΌ ν κ²μΈμ§ κ²°μ νλ€. λ°λΌμμ€μ½ν
λ μλ°μ€ν¬λ¦½νΈ μμ§μ΄ μλ³μλ₯Ό κ²μν λ μ¬μ©νλ κ·μΉμ΄λΌκ³ λ ν μ μλ€.
π‘ var ν€μλλ‘ μ μΈν λ³μμ μ€λ³΅ μ μΈ
function foo() {
var x = 1;
// var ν€μλλ‘ μ μΈλ λ³μλ κ°μ μ€μ½ν λ΄μμ μ€λ³΅ μ μΈμ νμ©νλ€.
// μλ λ³μ μ μΈλ¬Έμ μλ°μ€ν¬λ¦½νΈ μμ§μ μν΄ var ν€μλκ° μλ κ²μ²λΌ λμνλ€.
var x= 2;
console.log(x); //2
}
foo()
function bar() {
let x = 1;
// letμ΄λ const ν€μλλ‘ μ μΈλ λ³μλ κ°μ μ€μ½ν λ΄μμ μ€λ³΅ μ μΈμ νμ©νμ§ μλλ€.
let x = 2; // SyntaxError μ΄λ―Έ μ‘΄μ¬
}
bar();
κ΅¬λΆ | μ€λͺ | μ€μ½ν | λ³μ |
---|---|---|---|
μ μ | μ½λμ κ°μ₯ λ°κΉ₯ μμ | μ 겨 μ€μ½ν | μ μ λ³μ |
μ§μ | ν¨μ λͺΈμ²΄ λ΄λΆ | μ§μ μ€μ½ν | μ§μ λ³μ |
λ³μλ μμ μ΄ μ μΈλ μμΉ(μ μ λλ μ§μ)μ μν΄ μμ μ΄ μ ν¨ν λ²μμΈ μ€μ½νκ° κ²°μ λλ€. μ¦, μ μμμ μ μΈλ λ³μλ μ μ μ€μ½νλ₯Ό κ°λ μ μ λ³μμ΄κ³ , μ§μμμ μ μΈλ λ³μλ μ§μ μ€μ½νλ₯Ό κ°λ μ§μ λ³μλ€.
μ μμ΄λ μ½λμ κ°μ₯ λ°κΉ₯ μμμ λ§νκ³ μ μμ μ μ μ€μ½νλ₯Ό λ§λ λ€. λν μ μμ λ³μλ₯Ό μ μΈνλ©΄ μ μ μ€μ½νλ₯Ό κ°λ μ μ λ³μκ° λλ€. μ μ λ³μλ μ΄λμλ μ§ μ°Έμ‘° κ°λ₯
μ§μ μ΄λ ν¨μ λͺΈμ²΄ λ΄λΆλ₯Ό λ§νλ€. μ§μμ μ§μ μ€μ½νλ₯Ό λ§λ λ€. μ§μμ λ³μλ₯Ό μ μΈνλ©΄ μ§μμ€μ½νλ₯Ό κ°λ μ§μ λ³μκ° λλ€. μ§μ λ³μλ μμ μ΄ μ μΈλ μ§μκ³Ό νμ μ§μ(μ€μ²© ν¨μ)μμλ§ μ°Έμ‘°ν μ μλ€. λ€μ λ§ν΄, μ§μ λ³μλ μμ μ μ§μ μ€μ½νμ νμ μ§μ μ€μ½νμμ μ ν¨νλ€.
μ€μ½νκ° κ³μΈ΅μ μΌλ‘ μ°κ²°λ κ²μ
μ€μ½ν 체μΈ
μ΄λΌ νλ€.
ν¨μ λͺΈμ²΄ λ΄λΆμμ ν¨μκ° μ μλ κ²μν¨μμ μ€μ²©
μ΄λΌνκ³ ν¨μ λͺΈμ²΄ λ΄λΆμμ μ μν ν¨μλ₯Όμ€μ²© ν¨μ
μ€μ²© ν¨μ
λ₯Ό ν¬ν¨νλ ν¨μλ₯ΌμΈλΆ ν¨μ
λΌκ³ νλ€.
ν¨μλ μ€μ²©λ μ μμΌλ―λ‘ ν¨μμ μ§μ μ€μ½νλ μ€μ²©λ μ μλ€ μ΄λ μ€μ½νκ° ν¨μμ μ€μ²©μ μν΄ κ³μΈ΅μ ꡬ쑰λ₯Ό κ°λλ€. λ€μ λ§ν΄, μ€μ²© ν¨μμ μ§μμ€μ½νλ μ€μ²© ν¨μλ₯Ό ν¬ν¨νλ μΈλΆ ν¨μμ μ§μ μ€μ½νμ κ³μΈ΅μ ꡬ쑰λ₯Ό κ°λλ€. μ΄λ μΈλΆ ν¨μμ μ§μ μ€μ½νλ₯Ό μμ μ€μ½νλΌκ³ νλ€.
λ³μλ₯Ό μ°Έμ‘°ν λ μλ°μ€ν¬λ¦½νΈ μμ§μμ€μ½ν 체μΈ
μ ν΅ν΄ λ³μλ₯Ό μ°Έμ‘°νλ μ½λμ μ€μ½νμμ μμνμ¬ μμ μ€μ½ν λ°©ν₯μΌλ‘ μ΄λνλ©° μ μΈλ λ³μλ₯Ό κ²μνλ€.
μ΄λ μμ μ€μ½νμμ μ ν¨ν λ³μλ νμ μ€μ½νμμ μμ λ‘κ² μ°Έμ‘°ν μ μμ§λ§ νμ μ€μ½νμμ μ ν¨ν λ³μλ₯Ό μμ μ€μ½νμμ μ°Έμ‘°ν μ μλ€.
μ½λ λΈλ‘μ΄ μλ ν¨μμ μν΄μλ§ μ§μ μ€μ½νκ° μμ±λλ€λ κ²μ μλ―Έ.
var
ν€μλλ‘ μ μΈλ λ³μλ μ€λ‘μ§ ν¨μμ μ½λ λΈλ‘(ν¨μ λͺΈμ²΄)λ§μ μ§μ μ€μ½νλ‘ μΈμ μ΄λ¬ν νΉμ±μν¨μ λ 벨 μ€μ½ν
var x = 1;
function foo() {
var x = 10;
bar();
}
function bar() {
console.log(x);
}
foo(); // 1
bar(); // 1
μ μμ μ μ€ν κ²°κ³Όλ bar ν¨μμ μμ μ€μ½νκ° λ¬΄μμΈμ§μ λ°λΌ κ²°μ
μ΄λ¬ν λ°©μμ
λμ μ€μ½ν
λΌ νλ€. ν¨μκ° νΈμΆλλ μμ μ λμ μΌλ‘ μμ μ€μ½νλ₯Ό κ²°μ νλ€.λμ μ€μ½ν
μ λ°©μμΌλ‘ bar ν¨μμ μμ μ€μ½νλ foo ν¨μμ μ§μμ€μ½νμ μ μμ€μ½ν μΌ κ²μ΄λ€.
βοΈ ν¨μλ₯Ό μ΄λμ μ μνλμ§μ λ°λΌ ν¨μμ μμ μ€μ½ν κ²°μ
μ΄λ¬ν λ°©μμ
λ μ컬 μ€μ½ν
λλμ μ μ€μ½ν
λΌ νλ€. ν¨μ μ μκ° νκ°λλ μμ μ μμ μ€μ½νκ° μ μ μΌλ‘ κ²°μ λκΈ° λλ¬Έμμ μ μ€μ½ν
λΌκ³ λΆλ₯Έλ€.
π‘ μλ°μ€ν¬λ¦½νΈλ λ μ컬 μ€μ½νλ₯Ό λ°λ₯΄λ―λ‘ ν¨μλ₯Ό μ΄λμ νΈμΆνλμ§κ° μλλΌ ν¨μλ₯Ό μ΄λμ μ μνλμ§μ λ°λΌ μμ μ€μ½νλ₯Ό κ²°μ νλ€. ν¨μκ° νΈμΆλ μμΉλ μμ μ€μ½ν κ²°μ μ μ΄λ ν μν₯λ μ£Όμ§ μλλ€. μ¦, ν¨μμ μμ μ€μ½νλ μΈμ λ μμ μ΄ μ μλ μ€μ½νλ€.
π‘ μ΄μ²λΌ ν¨μμ μμ μ€μ½νλ ν¨μ μ μκ° μ€νλ λ μ μ μΌλ‘ κ²°μ λλ€. ν¨μ μ μ(ν¨μ μ μΈλ¬Έ λλ ν¨μ ννμ)κ° μ€νλμ΄ μμ±λ ν¨μ κ°μ²΄λ μ΄λ κ² κ²°μ λ μμ μ€μ½νλ₯Ό κΈ°μ΅νλ€. ν¨μκ° νΈμΆλ λλ§λ€ ν¨μμ μμ μ€μ½νλ₯Ό μ°Έμ‘°ν νμκ° μκΈ° λλ¬Έμ΄λ€.