πŸ₯‡ ν΄λ‘œμ €λž€ 무엇인가?

Jake_YoungΒ·2020λ…„ 9μ›” 18일
0
post-thumbnail

πŸ“’ 원문 링크

이 글은 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)
});
profile
μžλ°”μŠ€ν¬λ¦½νŠΈμ™€ 파이썬 그리고 컴퓨터와 λ„€νŠΈμ›Œν¬

0개의 λŒ“κΈ€