TIL-18_2020.01.07

Jiwoo Joy Kim (zuzokim)Β·2021λ…„ 1μ›” 7일
0

TIL

λͺ©λ‘ 보기
18/30
post-thumbnail

🐯 javascript koans

scope

  • ν•¨μˆ˜μ„ μ–Έμ‹μ—μ„œλŠ” ν˜Έμ΄μŠ€νŒ…μ΄ 이루어진닀. ν•¨μˆ˜κ°€ μžμ‹ μ΄ μœ„μΉ˜ν•œ μ½”λ“œμ— 상관없이 μ½”λ“œμ˜ 맨 μ²˜μŒλΆ€ν„° μ‹€ν–‰ν•œλ‹€. (λŒμ–΄μ˜¬λ €μ§„λ‹€.)
  • ν•¨μˆ˜ν‘œν˜„μ‹μ—μ„œλŠ” ν˜Έμ΄μŠ€νŒ…μ΄ 이루어지지 μ•ŠλŠ”λ‹€.

lexical scope

  • javascriptλŠ” 기본적으둜 ν•¨μˆ˜λ ˆλ²¨μŠ€μ½”ν”„λ₯Ό λ”°λ₯Έλ‹€. let ν‚€μ›Œλ“œλ₯Ό μ΄μš©ν•΄ λΈ”λ‘λ ˆλ²¨μŠ€μ½”ν”„λ₯Ό μ΄μš©ν•  수 μžˆλ‹€.
  • var x = 1;
    function foo() {
      var x = 10;
      bar();
    }
    function bar() {
      console.log(x);
    }
    foo(); // ?
    bar(); // ?```
  • μœ„ 예제의 μ‹€ν–‰ κ²°κ³ΌλŠ” ν•¨μˆ˜ bar의 μƒμœ„ μŠ€μ½”ν”„κ°€ 무엇인지에 따라 κ²°μ •λœλ‹€. 두가지 νŒ¨ν„΄μ„ μ˜ˆμΈ‘ν•  수 μžˆλŠ”λ° μ²«λ²ˆμ§ΈλŠ” ν•¨μˆ˜λ₯Ό μ–΄λ””μ„œ ν˜ΈμΆœν•˜μ˜€λŠ”μ§€μ— 따라 μƒμœ„ μŠ€μ½”ν”„λ₯Ό κ²°μ •ν•˜λŠ” 것이고 λ‘λ²ˆμ§ΈλŠ” ν•¨μˆ˜λ₯Ό μ–΄λ””μ„œ μ„ μ–Έν•˜μ˜€λŠ”μ§€μ— 따라 μƒμœ„ μŠ€μ½”ν”„λ₯Ό κ²°μ •ν•˜λŠ” 것이닀. 첫번째 λ°©μ‹μœΌλ‘œ ν•¨μˆ˜μ˜ μƒμœ„ μŠ€μ½”ν”„λ₯Ό κ²°μ •ν•œλ‹€λ©΄ ν•¨μˆ˜ bar의 μƒμœ„ μŠ€μ½”ν”„λŠ” ν•¨μˆ˜ foo와 전역일 것이고, λ‘λ²ˆμ§Έ λ°©μ‹μœΌλ‘œ ν•¨μˆ˜μ˜ μŠ€μ½”ν”„λ₯Ό κ²°μ •ν•œλ‹€λ©΄ ν•¨μˆ˜ bar의 μŠ€μ½”ν”„λŠ” 전역일 것이닀.
    ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄λŠ” 이 두가지 방식 쀑 ν•˜λ‚˜μ˜ λ°©μ‹μœΌλ‘œ ν•¨μˆ˜μ˜ μƒμœ„ μŠ€μ½”ν”„λ₯Ό κ²°μ •ν•œλ‹€. 첫번째 방식을 동적 μŠ€μ½”ν”„(Dynamic scope)라 ν•˜κ³ , λ‘λ²ˆμ§Έ 방식을 λ ‰μ‹œμ»¬ μŠ€μ½”ν”„(Lexical scope) λ˜λŠ” 정적 μŠ€μ½”ν”„(Static scope)라 ν•œλ‹€. μžλ°”μŠ€ν¬λ¦½νŠΈλ₯Ό λΉ„λ‘―ν•œ λŒ€λΆ€λΆ„μ˜ ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄λŠ” λ ‰μ‹œμ»¬ μŠ€μ½”ν”„λ₯Ό λ”°λ₯Έλ‹€.
    λ ‰μ‹œμ»¬ μŠ€μ½”ν”„λŠ” ν•¨μˆ˜λ₯Ό μ–΄λ””μ„œ ν˜ΈμΆœν•˜λŠ”μ§€κ°€ μ•„λ‹ˆλΌ 어디에 μ„ μ–Έν•˜μ˜€λŠ”μ§€μ— 따라 κ²°μ •λœλ‹€. μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” λ ‰μ‹œμ»¬ μŠ€μ½”ν”„λ₯Ό λ”°λ₯΄λ―€λ‘œ ν•¨μˆ˜λ₯Ό μ„ μ–Έν•œ μ‹œμ μ— μƒμœ„ μŠ€μ½”ν”„κ°€ κ²°μ •λœλ‹€. ν•¨μˆ˜λ₯Ό μ–΄λ””μ—μ„œ ν˜ΈμΆœν•˜μ˜€λŠ”μ§€λŠ” μŠ€μ½”ν”„ 결정에 μ•„λ¬΄λŸ° 의미λ₯Ό 주지 μ•ŠλŠ”λ‹€. μœ„ 예제의 ν•¨μˆ˜ barλŠ” 전역에 μ„ μ–Έλ˜μ—ˆλ‹€. λ”°λΌμ„œ ν•¨μˆ˜ bar의 μƒμœ„ μŠ€μ½”ν”„λŠ” μ „μ—­ μŠ€μ½”ν”„μ΄κ³  μœ„ μ˜ˆμ œλŠ” μ „μ—­ λ³€μˆ˜ x의 κ°’ 1을 λ‘λ²ˆ 좜λ ₯ν•œλ‹€.

closure

  • νŽ˜μ–΄λΆ„κ³Ό ν•¨κ»˜ κ³ λ―Όν–ˆλ˜ ν΄λ‘œμ € ν•¨μˆ˜ 파트. μ„ μ–Έ ν‚€μ›Œλ“œ 여뢀와 ν•¨κ»˜ μ™ΈλΆ€/λ‚΄λΆ€ ν•¨μˆ˜ ꡬ쑰λ₯Ό νŒŒμ•…ν•˜λŠ” 일이 쉽지 μ•Šμ•˜λ‹€. λ˜ν•œ ν•¨μˆ˜ μ„ μ–Έκ³Ό 싀행은 λ‹€λ₯΄λ‹€λŠ” 것. λ­”κ°€ 아직 λͺ…ν™•νžˆ 이해λ₯Ό ν•˜μ§€ λͺ»ν•œ 것 κ°™λ‹€.
profile
- I make something! βœπŸ½πŸ‘©πŸ»β€πŸ’»πŸŽ¬πŸŽ¨πŸ’–πŸͺ‘πŸ”¨πŸ”œ

0개의 λŒ“κΈ€