πŸ’‘ 13.1 μŠ€μ½”ν”„λž€?

λͺ¨λ“  μ‹λ³„μž(λ³€μˆ˜ 이름, ν•¨μˆ˜ 이름, 클래슀 이름등(λŠ” μžμ‹ μ΄ μ„ μ–Έλœ μœ„μΉ˜μ— μ˜ν•΄ λ‹€λ₯Έ μ½”λ“œκ°€ μ‹λ³„μž μžμ‹ μ„ μ°Έμ‘°ν•  수 μžˆλŠ” 유효 λ²”μœ„κ°€ κ²°μ •λœλ‹€. 이λ₯Ό μŠ€μ½”ν”„λΌκ³  ν•œλ‹€. 즉 μŠ€μ½”ν”„λŠ” μ‹λ³„μžκ°€ μœ νš¨ν•œ λ²”μœ„λ₯Ό λ§ν•œλ‹€.

πŸ’‘ 13.2 μŠ€μ½”ν”„μ˜ μ’…λ₯˜

μ½”λ“œλŠ” μ „μ—­κ³Ό μ§€μ—­μœΌλ‘œ ꡬ뢄할 수 μžˆλ‹€. μ „μ—­μ—μ„œ μ„ μ–Έλœ λ³€μˆ˜λŠ” μ „μ—­ μŠ€μ½”ν”„λ₯Ό κ°–λŠ” μ „μ—­ λ³€μˆ˜μ΄κ³ , μ§€μ—­μ—μ„œ μ„ μ–Έλœ λ³€μˆ˜λŠ” 지역 μŠ€μ½”ν”„λ₯Ό κ°–λŠ” 지역 λ³€μˆ˜μ΄λ‹€.

πŸ’‘ 13.3 μŠ€μ½”ν”„ 체인

μŠ€μ½”ν”„λŠ” ν•¨μˆ˜μ˜ 쀑첩에 μ˜ν•΄ 계측적인 ꡬ쑰λ₯Ό κ°–λŠ”λ‹€. μ΄λ ‡κ²Œ μŠ€μ½”ν”„κ°€ κ³„μΈ΅μ μœΌλ‘œ μ—°κ²°λœ 것을 μŠ€μ½”ν”„ 체인이라고 ν•œλ‹€.

λ³€μˆ˜λ₯Ό μ°Έμ‘°ν•  λ•Œ μžλ°”μŠ€ν¬λ¦½νŠΈ 엔진은 μŠ€μ½”ν”„ 체인을 톡해 λ³€μˆ˜λ₯Ό μ°Έμ‘°ν•˜λŠ” μ½”λ“œμ˜ μŠ€μ½”ν”„μ—μ„œ μƒμœ„ μŠ€μ½”ν”„ λ°©ν–₯으둜 μ΄λ™ν•˜λ©° μ„ μ–Έλœ λ³€μˆ˜λ₯Ό κ²€μƒ‰ν•œλ‹€.

🧐 λ ‰μ‹œμ»¬ ν™˜κ²½(Lexical Environment)

μŠ€μ½”ν”„ 체인은 μ‹€ν–‰ μ»¨ν…μŠ€νŠΈμ˜ λ ‰μ‹œμ»¬ ν™˜κ²½μ„ 단방ν–₯으둜 μ—°κ²°ν•œ 것이닀. μ „μ—­ λ ‰μ‹œμ»¬ ν™˜κ²½μ€ μ½”λ“œκ°€ λ‘œλ“œλ˜λ©΄ κ³§λ°”λ‘œ μƒμ„±λ˜κ³  ν•¨μˆ˜μ˜ λ ‰μ‹œμ»¬ ν™˜κ²½μ€ ν•¨μˆ˜κ°€ 호좜되면 κ³§λ°”λ‘œ μƒμ„±λœλ‹€.

13.3.1 μŠ€μ½”ν”„ 체인에 μ˜ν•œ λ³€μˆ˜ 검색

μžλ°”μŠ€ν¬λ¦½νŠΈ 엔진은 μŠ€μ½”ν”„ 체인을 따라 λ³€μˆ˜λ₯Ό μ°Έμ‘°ν•˜λŠ” μ½”λ“œμ˜ μŠ€μ½”ν”„μ—μ„œ μ‹œμž‘ν•΄μ„œ μƒμœ„ μŠ€μ½”ν”„ λ°©ν–₯으둜 μ΄λ™ν•˜λ©° μ„ μ–Έλœ λ³€μˆ˜λ₯Ό κ²€μƒ‰ν•œλ‹€. μ ˆλŒ€ ν•˜μœ„ μŠ€μ½”ν”„λ‘œ λ‚΄λ €κ°€λ©΄μ„œ μ‹λ³„μžλ₯Ό κ²€μƒ‰ν•˜λŠ” 일은 μ—†λ‹€. μ΄λŠ” μƒμœ„ μŠ€μ½”ν”„μ—μ„œ μœ νš¨ν•œ λ³€μˆ˜λŠ” ν•˜μœ„ μŠ€μ½”ν”„μ—μ„œ 자유둭게 μ°Έμ‘°ν•  수 μžˆμ§€λ§Œ ν•˜μœ„ μŠ€μ½”ν”„μ—μ„œ μœ νš¨ν•œ λ³€μˆ˜λ₯Ό μƒμœ„ μŠ€μ½”ν”„μ—μ„œ μ°Έμ‘°ν•  수 μ—†λ‹€λŠ”κ²ƒμ„ μ˜λ―Έν•œλ‹€.

13.3.2 μŠ€μ½”ν”„ 체인에 μ˜ν•œ ν•¨μˆ˜ 검색

ν•¨μˆ˜λ„ μ‹λ³„μž 이기 λ•Œλ¬Έμ— μŠ€μ½”ν”„λ₯Ό κ°–λŠ”λ‹€. λ”°λΌμ„œ μŠ€μ½”ν”„λŠ” μ‹λ³„μžλ₯Ό κ²€μƒ‰ν•˜λŠ” κ·œμΉ™μœΌλ‘œ ν‘œν˜„ν•˜λŠ”κ²ƒμ΄ μ ν•©ν•˜λ‹€

πŸ’‘ 13.4 ν•¨μˆ˜ 레벨 μŠ€μ½”ν”„

지역 μŠ€μ½”ν”„λŠ” μ½”λ“œ 블둝이 μ•„λ‹Œ ν•¨μˆ˜μ— μ˜ν•΄μ„œλ§Œ μƒμ„±λœλ‹€. var ν‚€μ›Œλ“œλ‘œ μ„ μ–Έλœ λ³€μˆ˜λŠ” μ˜€λ‘œμ§€ ν•¨μˆ˜μ˜ μ½”λ“œ 블둝(ν•¨μˆ˜ λͺΈμ²΄) λ§Œμ„ 지역 μŠ€μ½”ν”„λ‘œ μΈμ •ν•œλ‹€.

  var x = 1;

  if (true) {
    // var ν‚€μ›Œλ“œλ‘œ μ„ μ–Έλœ λ³€μˆ˜λŠ” ν•¨μˆ˜μ˜ μ½”λ“œ 블둝(ν•¨μˆ˜ λͺΈμ²΄)λ§Œμ„ 지역 μŠ€μ½”ν”„λ‘œ μΈμ •ν•œλ‹€.
    // ν•¨μˆ˜ λ°–μ—μ„œ var ν‚€μ›Œλ“œλ‘œ μ„ μ–Έλœ λ³€μˆ˜λŠ” μ½”λ“œ 블둝 λ‚΄μ—μ„œ μ„ μ–Έλ˜μ—ˆλ‹€ 할지라도 λͺ¨λ‘ μ „μ—­ λ³€μˆ˜λ‹€.
    // λ”°λΌμ„œ xλŠ” μ „μ—­ λ³€μˆ˜λ‹€. 이미 μ„ μ–Έλœ μ „μ—­ λ³€μˆ˜ xκ°€ μžˆμœΌλ―€λ‘œ x λ³€μˆ˜λŠ” 쀑볡 μ„ μ–Έλœλ‹€.
    // μ΄λŠ” μ˜λ„μΉ˜ μ•Šκ²Œ λ³€μˆ˜ 값이 λ³€κ²½λ˜λŠ” λΆ€μž‘μš©μ„ λ°œμƒμ‹œν‚¨λ‹€.
    var x = 10;
  }

  console.log(x); // 10
  var i = 10;

  // for λ¬Έμ—μ„œ μ„ μ–Έν•œ iλŠ” μ „μ—­ λ³€μˆ˜λ‹€. 이미 μ„ μ–Έλœ μ „μ—­ λ³€μˆ˜ iκ°€ μžˆμœΌλ―€λ‘œ 쀑볡 μ„ μ–Έλœλ‹€.
  for (var i = 0; i < 5; i++) {
    console.log(i); // 0 1 2 3 4
  }

  // μ˜λ„μΉ˜ μ•Šκ²Œ λ³€μˆ˜μ˜ 값이 λ³€κ²½λ˜μ—ˆλ‹€.
  console.log(i); // 5

πŸ’‘ 13.5 λ ‰μ‹œμ»¬ μŠ€μ½”ν”„

ν•¨μˆ˜λ₯Ό μ–΄λ””μ„œ μ •μ˜ν–ˆλŠ”μ§€μ— 따라 ν•¨μˆ˜μ˜ μƒμœ„ μŠ€μ½”ν”„λ₯Ό κ²°μ •ν•˜λŠ”κ²ƒμ„ λ ‰μ‹œμ»¬ μŠ€μ½”ν”„λΌκ³  ν•œλ‹€. μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” λ ‰μ‹œμ»¬ μŠ€μ½”ν”„λ₯Ό λ”°λ₯΄λ―€λ‘œ ν•¨μˆ˜λ₯Ό μ–΄λ””μ„œ ν˜ΈμΆœν–ˆλŠ”μ§€κ°€ μ•„λ‹ˆλΌ ν•¨μˆ˜λ₯Ό μ–΄λ””μ„œ μ •μ˜ν–ˆλŠ”μ§€μ— 따라 μƒμœ„ μŠ€μ½”ν”„λ₯Ό κ²°μ •ν•œλ‹€. ν•¨μˆ˜κ°€ 호좜된 μœ„μΉ˜λŠ” μƒμœ„ μŠ€μ½”ν”„ 결정에 μ–΄λ– ν•œ 영ν–₯도 주지 μ•ŠλŠ”λ‹€. 즉 ν•¨μˆ˜μ˜ μƒμœ„ μŠ€μ½”ν”„λŠ” μ–Έμ œλ‚˜ μžμ‹ μ΄ μ •μ˜λœ μŠ€μ½”ν”„λ‹€. 이처럼 ν•¨μˆ˜μ˜ μƒμœ„ μŠ€μ½”ν”„λŠ” ν•¨μˆ˜ μ •μ˜κ°€ 싀행될 λ•Œ μ •μ μœΌλ‘œ κ²°μ •λœλ‹€. ν•¨μˆ˜ μ •μ˜(ν•¨μˆ˜ μ„ μ–Έλ¬Έ λ˜λŠ” ν•¨μˆ˜ ν‘œν˜„μ‹)κ°€ μ‹€ν–‰λ˜μ–΄ μƒμ„±λœ ν•¨μˆ˜ κ°μ²΄λŠ” μ΄λ ‡κ²Œ κ²°μ •λœ μƒμœ„ μŠ€μ½”ν”„λ₯Ό κΈ°μ–΅ν•œλ‹€. ν•¨μˆ˜κ°€ 호좜될 λ•Œλ§ˆλ‹€ ν•¨μˆ˜μ˜ μƒμœ„ μŠ€μ½”ν”„λ₯Ό μ°Έμ‘°ν•  ν•„μš”κ°€ 있기 λ•Œλ¬Έμ΄λ‹€.

profile
μ΄μ‚¬μ€‘μž…λ‹ˆλ‹€!🌟https://velog.io/@devkyoung2

0개의 λŒ“κΈ€

κ΄€λ ¨ μ±„μš© 정보