π
JS - Scope
November 05, 2022
Closure
- λ³μμ μ ν¨λ²μλ₯Ό μλ―Ένλ€
μ μ μ€μ½ν, μ§μ μ€μ½ν
- λ³μμ κ°μ΄ μ μ μ€μ½ν, μ§μ μ€μ½νλ‘ ν¬κ² λλ μ μλ€
var μ μ = '1';
function foo() {
var μ§μ = '1';
}
ν¨μ μ€μ½ν, λΈλ‘ μ€μ½ν
- μλ°μ€ν¬λ¦½νΈλ μΌλ°μ μΌλ‘ ν¨μ μ€μ½νλ₯Ό κ°λλ€ (varλ₯Ό μ¬μ©ν κ²½μ°)
function foo() {
if (true) {
var a = 1;
}
console.log(a); // 1
}
- letμ μ¬μ©νλ©΄ λΈλ‘ μ€μ½νλ₯Ό μ¬μ©ν μ μλ€
function foo() {
if (true) {
let a = 1;
}
console.log(a); // undefined
}
λ μ컬 μ€μ½ν
- λ μ컬/μ μ μ€μ½νμμλ ν¨μ μ€μ½νμ μμ μ€μ½νλ₯Ό ν¨μκ° μ μΈλ μμΉμ μ€μ½νκ° μμ μ€μ½νκ° λλ€
- λμ μ€μ½νμμλ ν¨μκ° νΈμΆλ μμΉμ μ€μ½νκ° μμ μ€μ½νκ° λλ€.
- μλ°μ€ν¬λ¦½νΈλ λ μ컬 μ€μ½νλ₯Ό λ°λ₯Έλ€
function foo_1() {
var a = 1;
function foo_2() {
var a = 2;
foo_3();
}
function foo_3() {
console.log(a); // 1
}
}
μ묡μ μ μ λ³μ(?)
- μλ°μ€ν¬λ¦½νΈμμλ λ³μ μ μΈ μμ΄ identifierλ₯Ό μ¬μ©ν΄ κ°μ ν λΉνλ©΄ window κ°μ²΄μ νλ‘νΌν°μ ν΄λΉ identifierλ₯Ό ν¬ν¨ν΄ μ μ κ°μ²΄μ²λΌ μ¬μ©ν μ μλ€. νμ§λ§ μ€μ μ μ λ³μλ μλλΌ hoistingμ΄ λ°μνμ§ μκ³ deleteλ‘ κ°μ²΄μμ μμ κ° κ°λ₯νλ€.
function foo() {
y = 10;
}
foo();
// window.y = 10 λ‘ μ μ₯λμ΄ μμ
λ
π