π’ μλ¬Έ λ§ν¬
μ΄ κΈμ Eric Elliottμ "Master the javascript interview: what is a closure?"μ κΈμ ν λλ‘ μμ±λμμμ 미리 μλ¦°λ€.
π 4μ²λ§μμ κ°μΉ
- λ―Έκ΅μμ μλμ΄μ μ£Όλμ΄ κ°λ°μμ λͺΈ κ°μ 4μ²λ§μ μ λ μ°¨μ΄κ° λλ€.
- κ·Έ κΈ°μ€μ΄ λ μ μλ μΈν°λ·° μ§λ¬Έ μ€ λνμ μΈ κ²μ΄ ν΄λ‘μ μ΄λ€.
π ν΄λ‘μ
- ν΄λ‘μ λ "lexical environment"μ λν μ°Έμ‘°κ°μ ν¬ν¨ν μ¬λ¬κ°μ§ ν¨μλ€μ ν λ° λͺ¨μ κ²μ μλ―Ένλ€.
- λ€μλ§ν΄, ν΄λ‘μ κ° μκΈ° λλ¬Έμ λΉμ μ λ΄λΆ ν¨μμμ μΈλΆ ν¨μλ‘ μ κ·Όν μ μλ κ²μ΄λ€.
- μλ°μ€ν¬λ¦½νΈμμ ν΄λ‘μ λ ν¨μκ° μμ±λ λλ§λ€ λ§€λ² μμ±λλ€.
- ν΄λ‘μ λ₯Ό μ¬μ©νλ €λ©΄ λ€λ₯Έ ν¨μμ λ΄λΆ ν¨μλ‘ μλ‘μ΄ ν¨μλ₯Ό μ μνκ³ μ΄λ₯Ό λ
ΈμΆμμΌλΌ.
- μ¬κΈ°μ λ
ΈμΆμν¨λ€λ κ²μ return νκ±°λ λ€λ₯Έ ν¨μμ μΈμλ‘ μ λ¬νλΌλ μλ―Έμ΄λ€.
- κ·Έλ¬λ©΄ μ΄μ λ΄λΆν¨μλ μ¬μ§μ΄ μΈλΆν¨μκ° return λ μ΄νμλ μΈλΆ ν¨μμ λ³μλ€μ μ κ·Όν μ μλ κΆνμ κ°κ² λλ€.
π€ λ°μ΄ν°λ₯Ό μ¨κΈ°κ³ 보νΈνκΈ° μν λͺ©μ
- ν΄λ‘μ λ νν λ°μ΄ν°λ₯Ό μ¨κΈ°κΈ° μν΄ μ¬μ©λλ€.
Data privacy is an essential property that helps us program to an interface, not an implementation.
- λ§μ½ λΉμ μ΄ ν΄λ‘μ λ₯Ό μ¬μ©νλ€λ©΄, μ¨κ²¨μ§ λ³μλ μΈλΆν¨μμ λ²μ μμλ§ μμ κ²μ΄λ€.
- κ·Έλ¦¬κ³ μ΄λ 미리 μ μλ λ©μλ μ΄μΈμ λ°©λ²μΌλ‘λ μ²λ¦¬ν μ μκ² λλ€.
π€© μμ μ½λ
π¨π» μμ 1
const getSecret = (secret) => {
return {
get: () => secret
};
};
const expected = 1;
const obj = getSecret(1);
const actual = obj.get();
console.log(actual, expected);
π©π» μμ 2
const partialApply = (fn, ...fixedArgs) => {
return function (...remainingArgs) {
return fn.apply(this, fixedArgs.concat(remainingArgs));
};
};
const add = (a, b) => a + b;
const add10 = partialApply(add, 10);
const actual = add10(5);
const expected = 15;
console.log(actual, expected)
});