μλ°μ€ν¬λ¦½νΈλ λ³μμ μ¬μ© λ²μμ λ°λΌμ μ μλ³μ(global)κ³Ό μ§μλ³μ(local)λ‘ λλλ€. varλ‘ μ μΈ μ, scopeλ λ°λμ ν¨μμ μμλ§ νλ¨νλ€.
μ μ λ³μ : ν¨μ λ°μμ μ μΈλκ±°λ ν¨μ μμμ var ν€μλ μμ΄ μ μΈ
μ§μ λ³μ : ν¨μ μμμ var ν€μλλ‘ μ μΈ, μ μΈλ ν¨μ μμμλ§ μ¬μ© κ°λ₯
**μμ μ½λ**
μ μ λ³μ
var x;
function f() {
// jsλ 맀κ°λ³μμ μλ£ν μμ¨μ€
var y; // μ§μ
var x = 20; // μ§μ
y = 10;
// νμ μ€μ½νλ μμ κ³Ό κ°μ₯ κ°κΉμ΄ μμμ μ°ΎκΈ° λλ¬Έμ, μ§μλ³μ yλ₯Ό μλ―Έ
z = 30;
// varλ₯Ό μ°μ§ μμκΈ° λλ¬Έμ ν¨μ μμμ μ μΈμ νλ€κ³ μΈμνμ§ μλλ€.
// λν μ§μ μλ μ€μ½νκ° μκΈ° λλ¬Έμ μμ°μ€λ½κ² μ μμΌλ‘ μΈμ
}
f();
console.log(x); // undifined
console.log(z); // 30μ΄ λμ¨λ€.
β κ°μ₯ ν©λ¦¬μ μΈ μ νμ globalThisλ₯Ό μ¬μ©νλ κ²μ΄λ€.
λΈλΌμ°μ λ Έλ λͺ¨λ μ€νμ΄ κ°λ₯νλ©° μ μ κ°μ²΄λ₯Ό λͺ¨λ λμ€κ² ν΄μ£ΌκΈ° λλ¬Έμ΄λ€.
β thisκ°μ κ²½μ°λ κ°μ 쑰건μΈλ° μ λλλ‘ νΌν΄μΌ νλκ°?
thisλ κ°μ²΄λ₯Ό λ§λ€ λ κ°μ²΄ μμμ΄ μκΈ°λλ° κ·Έ μμμ μλ―ΈνκΈ°λ νλ€. κ°μ²΄ μμμ μ μ κ°μ²΄λ₯Ό μ΄λ€κ³ thisλ₯Ό μ°λ©΄ κ·ΈλλΆν°λ μ μ κ°μ²΄κ° μλ μ¬μ©μ μ μ κ°μ²΄λ₯Ό μλ―Ένκ² λλ€.