thumbnail
πŸ”— λ„ˆμ™€ λ‚˜μ˜ 연결고리! μŠ€μ½”ν”„μ™€ 클둜져
Javascript
2022.05.18

λ¨Όμ €, μŠ€μ½”ν”„μ— λŒ€ν•΄μ„œ μ•Œμ•„λ³ΌκΉŒ?

μŠ€μ½”ν”„μ˜ κΈ°λ³Έ κ°œλ…

μžλ°”μŠ€ν¬λ¦½νŠΈλ₯Ό ν¬ν•¨ν•œ λͺ¨λ“  ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄μ—μ„œ κ°€μž₯ 기본적이고도 μ€‘μš”ν•œ κ°œλ…μ΄λ‹€.

function add(x, y) {
  console.log(x, y)
  return x + y
}

add(3, 6)

console.log(x, y)
// ReferenceError: x is not defined μ–΄μ©Œκ³ 
  • λ³€μˆ˜ 이름, ν•¨μˆ˜ 이름, 클래슀 이름과 같은 μ‹λ³„μžκ°€ 본인이 μ„ μ–Έλœ μœ„μΉ˜μ— 따라 λ‹€λ₯Έ μ½”λ“œμ—μ„œ μžμ‹ μ΄ 참쑰될 수 μžˆμ„μ§€ 없을지 κ²°μ •λ˜λŠ” 것이 μŠ€μ½”ν”„μ΄λ‹€.

image

CODE μ „μ²΄λŠ” μ „μ—­κ³Ό μ§€μ—­μœΌλ‘œ ꡬ뢄할 수 있기 λ•Œλ¬Έμ—, μ–΄λ– ν•œ λ³€μˆ˜κ°€ μ „μ—­μ—μ„œ μ„ μ–Έλœλ‹€λ©΄
ν•΄λ‹Ή λ³€μˆ˜λŠ” μ „μ—­ μŠ€μ½”ν”„λ₯Ό κ°–κ²Œλ˜κ³ , μ§€μ—­μ—μ„œ μ„ μ–Έλœλ‹€λ©΄ ν•΄λ‹Ή λ³€μˆ˜λŠ” 지역 μŠ€μ½”ν”„λ₯Ό κ°–κ²Œλœλ‹€.


κ·Έλ ‡λ‹€λ©΄,
μ–΄λ–€ μ½”λ“œκ°€ 싀행될 λ•Œ μ°Έμ‘°ν•˜λ €λŠ” λ³€μˆ˜κ°€
μ „μ—­μ—λŠ” μžˆλŠ”λ° μ§€μ—­μ—λŠ” μ—†κ³ ,
μ§€μ—­μ—λŠ” μžˆλŠ”λ° μ „μ—­μ—λŠ” μ—†λ‹€λ©΄?
μ½”λ“œλŠ” μ–΄λ–€ λ³€μˆ˜λ₯Ό μ°Έμ‘°ν•΄μ•Όν• κΉŒ?

λ§ˆμŒμ— λ“œλŠ” 아무 λ³€μˆ˜λ‚˜ μ°Έμ‘°ν•˜μ§€ μ•ŠλŠ”λ‹€!


꼬리에 꼬리λ₯Ό λ¬΄λŠ” μŠ€μ½”ν”„ 체인

  • ν•¨μˆ˜λŠ” μ „μ—­μ—μ„œ μ •μ˜κ°€ 될 λ•Œλ„ μžˆμ§€λ§Œ, μ–΄λ–€ ν•¨μˆ˜μ˜ λ‚΄λΆ€μ—μ„œ μ •μ˜λ  μˆ˜λ„ μžˆλ‹€. ν•¨μˆ˜μ˜ 쀑첩
  • 쀑첩 ν•¨μˆ˜λ₯Ό ν¬ν•¨ν•˜λŠ” ν•¨μˆ˜λ₯Ό μ™ΈλΆ€ ν•¨μˆ˜λΌκ³  ν•œλ‹€.
  • 이처럼 ν•¨μˆ˜κ°€ 쀑첩이 λœλ‹€λ©΄ 각각의 ν•¨μˆ˜μ˜ 지역 μŠ€μ½”ν”„λ„ 쀑첩이 될 수 μžˆλ‹€.
    즉, ν•¨μˆ˜μ˜ 쀑첩에 μ˜ν•΄ 계측적인 ꡬ쑰λ₯Ό κ°€μ§ˆ 수 μžˆλ‹€λŠ” 의미!
var x = 'λ‚˜λŠ” μ „μ—­ xμ•Ό'

function outer() {
  var y = 'λ‚˜λŠ” outer ν•¨μˆ˜μ˜ 지역 yμ•Ό'
  console.log(x)
  console.log(y)

  function inner() {
    var x = 'λ‚˜λŠ” inner ν•¨μˆ˜μ˜ 지역 xμ•Ό'

    console.log(x)
    console.log(y)
  }

  inner()
}

outer()
console.log(x)
console.log(y)
  • μœ„μ˜ μ½”λ“œλŠ” μ™ΈλΆ€ν•¨μˆ˜μΈ outer() ν•¨μˆ˜μ™€ μ€‘μ²©ν•¨μˆ˜μΈ inner() ν•¨μˆ˜λ₯Ό 가지고 μžˆλ‹€.
  • μ „μ—­μ—μ„œ μ„ μ–Έλœ x, outer ν•¨μˆ˜ λ‚΄λΆ€μ—μ„œ μ„ μ–Έλœ y, inner ν•¨μˆ˜μ—μ„œλŠ” μ „μ—­μ—μ„œ μ„ μ–Έλœ xκ°€ λ˜‘κ°™μ€ μ΄λ¦„μœΌλ‘œ μ„ μ–Έλ˜κ³  두 ν•¨μˆ˜κ°€ μ‹€ν–‰λœλ‹€.

그럼 λ‹€μŒκ³Ό 같은 μ½˜μ†”μ΄ μ°νžˆκ² μ§€?

var x = 'λ‚˜λŠ” μ „μ—­ xμ•Ό'

function outer() {
  var y = 'λ‚˜λŠ” outer ν•¨μˆ˜μ˜ 지역 yμ•Ό'
  console.log(x) // 1️⃣ λ‚˜λŠ” μ „μ—­ xμ•Ό
  console.log(y) // 2️⃣ λ‚˜λŠ” outer ν•¨μˆ˜μ˜ 지역 yμ•Ό

  function inner() {
    var x = 'λ‚˜λŠ” inner ν•¨μˆ˜μ˜ 지역 xμ•Ό'

    console.log(x) // 3️⃣ λ‚˜λŠ” inner ν•¨μˆ˜μ˜ 지역 xμ•Ό
    console.log(y) // 4️⃣ λ‚˜λŠ” outer ν•¨μˆ˜μ˜ 지역 yμ•Ό
  }

  inner()
}

outer()

console.log(x) // 5️⃣ λ‚˜λŠ” μ „μ—­ xμ•Ό
console.log(y) // 6️⃣ ReferrenceError μ–΄μ©Œκ³ 

μŠ€μ½”ν”„μ˜ ꡬ간을 λ‚˜λˆ„μ–΄ 보자면!


234

  • inner ν•¨μˆ˜λŠ” outer ν•¨μˆ˜ λ‚΄λΆ€μ—μ„œ 선언이 λ˜μ—ˆκΈ° λ•Œλ¬Έμ—, inner ν•¨μˆ˜μ˜ μƒμœ„ μŠ€μ½”ν”„λŠ” outer ν•¨μˆ˜μ˜ μŠ€μ½”ν”„μ΄λ‹€.
  • 그리고 μ „μ—­μ—μ„œ μ •μ˜λœ outer ν•¨μˆ˜μ˜ μƒμœ„ μŠ€μ½”ν”„λŠ” μ „μ—­ μŠ€μ½”ν”„μ΄λ‹€.
  • 이처럼, μŠ€μ½”ν”„κ°€ κ³„μΈ΅μ μœΌλ‘œ 연결이 λ˜μ–΄ μžˆλŠ” 것을 μŠ€μ½”ν”„ 체인이라고 ν•œλ‹€. 물리적으둜 μ‘΄μž¬ν•¨!
  • μžλ°”μŠ€ν¬λ¦½νŠΈ 엔진은 μŠ€μ½”ν”„ 체인을 톡해 λ³€μˆ˜λ₯Ό μ°Έμ‘°ν•œλ‹€.
    • ν˜„μž¬ ν•¨μˆ˜κ°€ μ–΄λ–€ λ³€μˆ˜λ₯Ό μ°Έμ‘°ν•˜λ €κ³  ν•˜λŠ”λ° λ‚΄ μŠ€μ½”ν”„ μ•ˆμ— μ›ν•˜λŠ” λ³€μˆ˜κ°€ μ—†λ‹€λ©΄?
      JS : μ˜€μΌ€μ΄~ ν•˜λ‚˜ μœ„λ‘œ μ˜¬λΌκ°„λ‹€!
      ν•˜λ‚˜ μœ„λ‘œ μ˜¬λΌκ°”λŠ”λ°λ„ λ‚΄κ°€ μ›ν•˜λŠ” λ³€μˆ˜κ°€ μ—†λ‹€?
      JS : ν•œ 번 더 μœ„λ‘œ μ˜¬λΌκ°€μ§€ 뭐~
      μ΄λ ‡κ²Œ μ­‰μ­‰μ­‰ μœ„λ‘œ μ˜¬λΌκ°€λ©΄ μ΅œμƒμœ„μΈ μ „μ—­ μŠ€μ½”ν”„κΉŒμ§€ μ˜¬λΌκ°€κ²Œ λœλ‹€.
      그런데, μ „μ—­ μŠ€μ½”ν”„μ—λ„ λ‚΄κ°€ μ›ν•˜λŠ” λ³€μˆ˜κ°€ μ—†λ‹€λ©΄? 이 λ•Œ ReferrenceError λ₯Ό 좜λ ₯ν•œλ‹€.
  • 참고둜 μŠ€μ½”ν”„ μ²΄μΈμ—μ„œ λ³€μˆ˜λ₯Ό μ°Έμ‘°ν•  λ•ŒλŠ” 무쑰건 μœ„λ‘œλ§Œ 올라감!
    코딩을 ν•˜λ©΄μ„œ ν•˜μœ„ μŠ€μ½”ν”„μ—μ„œ μƒμœ„ μŠ€μ½”ν”„λ₯Ό μ°Έμ‘°ν•  수 μžˆλŠ” μ΄μœ κ°€ λ°”λ‘œ β€˜μŠ€μ½”ν”„ 체인의 단방ν–₯성’ λ•Œλ¬Έμ΄λ‹€.

image

  • μ½˜μ†” 둜그 μ°νžˆλŠ” κ³Όμ • : outer ν•¨μˆ˜ λ‚΄λΆ€ μŠ€μ½”ν”„μ— κ°€μ„œ λ³€μˆ˜ xλ₯Ό μ°ΎλŠ”λ‹€. 그런데 λ³€μˆ˜ xκ°€ μ—†μœΌλ‹ˆκΉŒ ν•˜λ‚˜μ”© μœ„λ‘œ μ˜¬λΌκ°€μ„œ μ „μ—­ μŠ€μ½”ν”„μ—μ„œ 찾으면 λ°”λ‘œ 좜λ ₯ν•œλ‹€.

μŠ€μ½”ν”„μ˜ μ’…λ₯˜

μŠ€μ½”ν”„λŠ” λͺ‡ κ°€μ§€μ˜ 기쀀을 가지고 ꡬ뢄할 수 μžˆλŠ”λ°,

image

μ–΄λ– ν•œ λ ˆλ²¨μ„ κ°€μ§€λŠλƒμ— λ”°λΌμ„œ~

1. 블둝 레벨 μŠ€μ½”ν”„

λŒ€λΆ€λΆ„ ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄μ—μ„œλŠ” ν•¨μˆ˜μ™€ λ”λΆˆμ–΄μ„œ ifλ¬Έ, forλ¬Έκ³Ό 같은 λͺ¨λ“  μ½”λ“œ λΈ”λŸ­μ΄ 지역 μŠ€μ½”ν”„λ₯Ό λ§Œλ“ λ‹€.

2. ν•¨μˆ˜ 레벨 μŠ€μ½”ν”„

반면, μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œλŠ” var ν‚€μ›Œλ“œλ‘œ μ„ μ–Έλœ λ³€μˆ˜λŠ” μ˜€λ‘œμ§€ ν•¨μˆ˜ μ½”λ“œ λΈ”λ‘λ§Œμ„ 지역 μŠ€μ½”ν”„λ‘œ μΈμ •ν•œλ‹€.
그런데, λ‹€λ₯Έ μ–Έμ–΄μ—λŠ” μžˆλŠ” 블둝 레벨 μŠ€μ½”ν”„λ₯Ό μžλ°”μŠ€ν¬λ¦½νŠΈλ„ κ°–κ³  μ‹Άμ–΄μ„œ λ§Œλ“€μ–΄μ§„ 것이 λ°”λ‘œ let, const
ES 6 μ΄ν›„λ‘œλŠ” let, const ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•˜λ©΄ μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œ ν•¨μˆ˜ 뿐만 μ•„λ‹ˆλΌ
ifλ¬Έ, forλ¬Έ, try … catchλ¬Έ λ“± λͺ¨λ“  블둝 λ‹¨μœ„μ— λŒ€ν•œ μŠ€μ½”ν”„λ₯Ό κ°€μ§ˆ 수 μžˆλ‹€.

μƒμœ„ μŠ€μ½”ν”„κ°€ κ²°μ •λ˜λŠ” μ‹œμ μ— λ”°λΌμ„œ~

ν•¨μˆ˜κ°€ μ–΄λ””μ„œ ν˜ΈμΆœλ˜μ—ˆλŠ”μ§€μ— 따라, ν•¨μˆ˜κ°€ μ–΄λ””μ„œ μ •μ˜λ˜μ—ˆλŠ”μ§€μ— λ”°λΌμ„œ λ‚˜λ‰  수 μžˆλ‹€.


1. 동적 μŠ€μ½”ν”„ : ν˜ΈμΆœλ˜λŠ” μ‹œμ 

ν”„λ‘œκ·Έλž¨ λŸ°νƒ€μž„ 도쀑에 μ‹€ν–‰ μ»¨ν…μŠ€νŠΈλ‚˜ 호좜 μ»¨ν…μŠ€νŠΈμ— μ˜ν•΄μ„œ μŠ€μ½”ν”„κ°€ κ²°μ •λ˜λŠ” 것을 μ˜λ―Έν•œλ‹€.


2. 정적 μŠ€μ½”ν”„ : νƒœμ–΄λ‚˜λŠ” μ‹œμ 

반면, ν•¨μˆ˜κ°€ μ •μ˜λ˜λŠ” μ‹œμ μ— μƒμœ„ μŠ€μ½”ν”„κ°€ κ²°μ •λ˜λŠ” 것을 정적 μŠ€μ½”ν”„(=== λ ‰μ‹œμ»¬ μŠ€μ½”ν”„)라고 ν•œλ‹€.
μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” λ ‰μ‹œμ»¬ μŠ€μ½”ν”„λ₯Ό λ”°λ₯΄κΈ° λ•Œλ¬Έμ— ν•¨μˆ˜κ°€ νƒœμ–΄λ‚˜μžλ§ˆμž μƒμœ„ μŠ€μ½”ν”„κ°€ 결정이 되고,
이후에 ν•΄λ‹Ή ν•¨μˆ˜μ— μ˜ν•΄ ν•¨μˆ˜ 객체가 생성이 되면 ν•΄λ‹Ή ν•¨μˆ˜ κ°μ²΄λŠ” 본인의 μƒμœ„ μŠ€μ½”ν”„λ₯Ό 항상 μ•Œ 수 있게 λœλ‹€.

  • ν•΄λ‹Ή ν•¨μˆ˜κ°€ μƒμœ„ μŠ€μ½”ν”„λ₯Ό 항상 μ•Œ 수 있게 λ˜λŠ” μ΄μœ λŠ” μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œμ˜ ν•¨μˆ˜λŠ” νƒœμ–΄λ‚˜λ©΄μ„œ μžμ‹ μ˜ λ‚΄λΆ€ μŠ¬λ‘―μ— μƒμœ„ μŠ€μ½”ν”„ μ°Έμ‘°λ₯Ό μ €μž₯ν•˜κΈ° λ•Œλ¬Έμ΄λ‹€!
  • νƒœμ–΄λ‚œ ν•¨μˆ˜κ°€ μ–΄λ””μ„ κ°€ 호좜이 되면, μžλ°”μŠ€ν¬λ¦½νŠΈ 엔진에 μ˜ν•΄ λ‹€μŒκ³Ό 같은 νλ¦„μœΌλ‘œ μ§„ν–‰λœλ‹€.

image

  1. 호좜된 ν•¨μˆ˜μ˜ μ‹€ν–‰ μ»¨ν…μŠ€νŠΈλ₯Ό μƒμ„±ν•œλ‹€.
  2. 이λ₯Ό μ‹€ν–‰ μ»¨ν…μŠ€νŠΈ μŠ€νƒμ— push ν•œλ‹€.
  3. κ·Έ 후에 ν•¨μˆ˜λŠ” λ ‰μ‹œμ»¬ ν™˜κ²½μ„ μƒμ„±ν•œλ‹€.
    μ–΄λ– ν•œ μ½”λ“œκ°€ μ–΄λ””μ„œ 싀행이 되고, 본인 주변에 μ–΄λ–€ μ½”λ“œκ°€ μžˆλŠ”μ§€ ꡬ체적인 정보λ₯Ό λ‹΄κ³  μžˆλŠ” ν™˜κ²½μœΌλ‘œ,
    λ ‰μ‹œμ»¬ ν™˜κ²½μ€ ν•¨μˆ˜ 본인 λ‚΄λΆ€μ˜ μ‹λ³„μž, μ‹λ³„μžμ— 바인딩 된 κ°’ 등을 κΈ°λ‘ν•˜κ³  μžˆλŠ” ν•˜λ‚˜μ˜ 자료 ꡬ쑰이닀.
  4. μ½”λ“œμ˜ 싀행이 λλ‚˜λ©΄ μ‹€ν–‰ μ»¨ν…μŠ€νŠΈ μŠ€νƒμ—μ„œ ν•΄λ‹Ή μ»¨ν…μŠ€νŠΈλ₯Ό pop ν•˜μ—¬ μ œκ±°ν•œλ‹€!

μœ„μ—μ„œ λ§ν•œ λ‚΄μš©μ„ ν† λŒ€λ‘œ μ½”λ“œ ν•˜λ‚˜λ₯Ό λΆ„μ„ν•΄λ³΄μž!

const x = 1

function outer() {
  const x = 10
  const inner = function () {
    console.log(x)
  }

  return inner
}

const hongcha = outer()
hongcha()

Q. 제일 λ§ˆμ§€λ§‰μ— μžˆλŠ” hongcha()λŠ” μ–΄λ–€ 값을 μ½˜μ†”μ— μ°μ„κΉŒ? 1 or 10?


  • μ½”λ“œ λ™μž‘ μ„€λͺ…
  1. outer() ν•¨μˆ˜κ°€ μ„ μ–Έλ˜μ–΄ 있고, κ·Έ μ•ˆμ— λ³€μˆ˜ xκ°€ μ„ μ–Έλ˜μ–΄ μžˆλ‹€.
    μ΄μ–΄μ„œ ν•¨μˆ˜ 내뢀에 inner() ν•¨μˆ˜κ°€ ν‘œν˜„λ˜μ–΄ μžˆλ‹€.
    outer() ν•¨μˆ˜λŠ” 쀑첩 ν•¨μˆ˜ inner()λ₯Ό hongchaμ—κ²Œ λ°˜ν™˜ν•˜λ©΄μ„œ 생λͺ… μ£ΌκΈ°λ₯Ό λ§ˆκ°ν•˜λŠ” ν•¨μˆ˜μ΄λ‹€.

  2. 즉, outer() ν•¨μˆ˜μ˜ 호좜이 μ’…λ£Œλ˜λ©΄ outer() ν•¨μˆ˜μ˜ μ‹€ν–‰ μ»¨ν…μŠ€νŠΈλŠ” μ‹€ν–‰ μ»¨ν…μŠ€νŠΈ μŠ€νƒμ—μ„œ μ œκ±°κ°€ λœλ‹€.

  3. λ”°λΌμ„œ outer() ν•¨μˆ˜μ˜ 내뢀에 μ„ μ–Έλœ λ³€μˆ˜ x도 생λͺ…μ£ΌκΈ°λ₯Ό λ§ˆκ°ν•˜κ²Œ 되고,
    κ·Έλ ‡κ²Œ const x = 10;에 μ ‘κ·Όν•  방법이 일단은 없어보인닀..!
    ν•˜μ§€λ§Œ, μ½”λ“œλ₯Ό 싀행해보면 β€˜10β€™μ΄λΌλŠ” 값이 λ‚˜μ˜€κ²Œ λœλ‹€.
    죽은 xλŠ” μ–΄λ–»κ²Œ μ‚΄μ•„ λŒμ•„μ™”μ„κΉŒ?!


xκ°€ λ‹€μ‹œ μ‚΄μ•„λ‚œ 이유λ₯Ό μ•ŒκΈ° μœ„ν•΄ 클둜져λ₯Ό μ•Œμ•„λ³΄μž!

ν΄λ‘œμ Έλž€? πŸ‘€

image

쀑첩 ν•¨μˆ˜ inner()κ°€ 이미 생λͺ…μ£ΌκΈ°λ₯Ό λ§ˆκ°ν•œ outer()ν•¨μˆ˜λ₯Ό μ°Έμ‘°ν•  수 μžˆμ—ˆλ‹€.
이처럼 μ™ΈλΆ€ ν•¨μˆ˜μ˜ 지역 λ³€μˆ˜ xλ₯Ό μ°Έμ‘°ν•  수 μžˆλ‹€λ©΄, 이 λ•Œ innerλ₯Ό 클둜져라고 ν•œλ‹€.


μ΄λ ‡κ²Œ 될 수 μžˆλŠ” 과정을 μ•„μ£Όμ•„μ£Ό κ°„λ‹¨ν•˜κ²Œ μ‚΄νŽ΄λ³΄λ©΄,

  • outer() ν•¨μˆ˜κ°€ μ’…λ£Œλ˜κΈ° μ „, μ‹€ν–‰ μ»¨ν…μŠ€νŠΈ λ ‰μ‹œμ»¬ ν™˜κ²½μ˜ λͺ¨μŠ΅

image

  • outer() ν•¨μˆ˜κ°€ μ‹€ν–‰ 쀑에 μžˆλ‹€κ°€ 생λͺ…μ£ΌκΈ°λ₯Ό λ§ˆκ°ν•˜λ©΄μ„œ μ΅œμ’…μ μœΌλ‘œ μ’…λ£Œλ˜μ—ˆμ„ λ•Œ λͺ¨μŠ΅

image

  1. outer ν•¨μˆ˜μ˜ 생λͺ…μ£ΌκΈ°κ°€ λλ‚˜λ©΄ μ‹€ν–‰ μ»¨ν…μŠ€νŠΈ μŠ€νƒμ—μ„œ μ œκ±°λœλ‹€.
  2. 이 λ•Œ, outer ν•¨μˆ˜λŠ” hongchaμ—κ²Œ inner ν•¨μˆ˜λ₯Ό λ°˜ν™˜ν•˜λ©΄μ„œ 사라진닀.
    (+ ν•¨μˆ˜λŠ” JSμ—μ„œ 1κΈ‰ κ°μ²΄λΌμ„œ κ°’μœΌλ‘œ 평가할 수 μžˆλ‹€. μŠ€νƒμ— λ‹€μ‹œ μŒ“μ΄λŠ” κ°œλ…μ΄ μ•„λ‹ˆλ‹€!)
  3. outer ν•¨μˆ˜κ°€ μ’…λ£Œλ˜λ©΄μ„œ μ‹€ν–‰ μ»¨ν…μŠ€νŠΈ μŠ€νƒμ—μ„œλŠ” μ™„μ „νžˆ μ œκ±°λ˜μ—ˆμ§€λ§Œ, outer() λ ‰μ‹œμ»¬ ν™˜κ²½κΉŒμ§€λŠ” 손을 λŒ€μ§€ μ•ŠλŠ”λ‹€.
  4. hongchaλŠ” inner ν•¨μˆ˜ 객체λ₯Ό μ°Έμ‘°ν•˜κ³  있고, inner ν•¨μˆ˜ κ°μ²΄λŠ” 본인의 λ‚΄λΆ€ μŠ¬λ‘―μ— μ €μž₯된 outer() λ ‰μ‹œμ»¬ ν™˜κ²½μ„ μ°Έμ‘°ν•˜κΈ° λ•Œλ¬Έμ— garbage collection의 λŒ€μƒμ΄ λ˜μ§€ μ•ŠλŠ”λ‹€!
  5. λ”°λΌμ„œ, hongcha에 μ˜ν•΄ innerν•¨μˆ˜λ₯Ό λ‹€μ‹œ ν˜ΈμΆœμ„ ν•˜λ©΄, outerν•¨μˆ˜μ— μžˆλŠ” 10을 κ°’μœΌλ‘œ 가지고 μžˆλŠ” λ³€μˆ˜ xλ₯Ό λ‹€μ‹œ μ°Έμ‘°ν•  수 μžˆκ²Œλœλ‹€.
  6. inner ν•¨μˆ˜ 객체 κΈ°μ€€μ—μ„œ, μ™ΈλΆ€ ν•¨μˆ˜λŠ” 생λͺ…μ£ΌκΈ°λ₯Ό λ§ˆκ°ν•˜κ³  μ‹€ν–‰ μ»¨ν…μŠ€νŠΈ μŠ€νƒμ—μ„œ μ‚¬λΌμ‘Œμ§€λ§Œ
    πŸ’‘λ‚΄κ°€ κΈ°μ–΅ν•˜κ³  μžˆλŠ” λ‚΄λΆ€ μŠ¬λ‘―μ— μ €μž₯된! μƒμœ„ μŠ€μ½”ν”„μ— μ˜μ‘΄ν•œ μƒμœ„ μŠ€μ½”ν”„μ˜ μ‹λ³„μžλ₯Ό μ°Έμ‘°ν•  수 μžˆλ‹€. 클둜져

image

ν•œ 쀑첩 ν•¨μˆ˜κ°€ μƒμœ„ μŠ€μ½”ν”„μ˜ μ‹λ³„μžλ₯Ό μ°Έμ‘°ν•˜κ³  있고,
κ±°κΈ°μ„œ μ€‘μ²©ν•¨μˆ˜μ˜ μ™ΈλΆ€ ν•¨μˆ˜λ³΄λ‹€ 더 였래 μ‚΄μ•„μžˆλ‹€λ©΄ (= μœ μ§€κ°€ λœλ‹€λ©΄)
이 μ€‘μ²©ν•¨μˆ˜λŠ” 클둜져! ν΄λ‘œμ ΈλŠ” 본인의 μƒμœ„ μŠ€μ½”ν”„μ—μ„œ ν˜„μž¬ μ°Έμ‘°ν•˜λŠ” μ‹λ³„μžλ§Œ κΈ°μ–΅ν•œλ‹€.

  • ν΄λ‘œμ Έμ— μ˜ν•΄μ„œ 참쑰된 λ³€μˆ˜λ₯Ό β€˜μžμœ  λ³€μˆ˜β€™λΌκ³  ν•œλ‹€.
  • ν΄λ‘œμ ΈλŠ” 이름뢀터 μ•½κ°„ λ‹«ν˜€μžˆλ‹€λŠ” λŠλ‚Œμ΄ λ“œλŠ”λ°, ν•¨μˆ˜ 본인이 κΈ°μ–΅ν•˜κ³  μžˆλŠ” 자유 λ³€μˆ˜μ— μ˜ν•΄ λ‹«ν˜€μžˆλ‹€? κ°‡ν˜€μžˆλ‹€?κ³  생각할 수 μžˆλ‹€.
  • μ΄λŸ¬ν•œ ν΄λ‘œμ ΈλŠ” ν•˜λ‚˜μ˜ stateκ°€ μ˜λ„μΉ˜μ•Šκ²Œ λ³€κ²½λ˜μ§€ μ•Šλ„λ‘
    stateλ₯Ό μ•ˆμ „ν•˜κ²Œ μ€λ‹‰ν•˜κ³ , λ˜λŠ” νŠΉμ • ν•¨μˆ˜μ—κ²Œλ§Œ state 변경을 ν—ˆμš©ν•˜κΈ° μœ„ν•΄ μ‚¬μš©ν•œλ‹€!

μ°Έκ³  λ‚΄μš©

유튜브 κ°•μ˜ by μš°μ•„ν•œTech톑

유튜브 κ°•μ˜ by μ½”λ”©μ•™λ§ˆ

Thank You for Visiting My Blog, Have a Good Day 😊
Β©2021 Developer minkyung choi, Powered By Gatsby.