Frontend/JavaScript

[JavaScript] μŠ€μ½”ν”„(Scope)λž€ 무엇인가?

_μ„±ν˜Έ_ 2022. 9. 5. 15:24
728x90
λ°˜μ‘ν˜•

μŠ€μ½”ν”„(Scope) ❓

1️⃣ λ³€μˆ˜λ₯Ό μ°Έμ‘°ν•  수 μžˆλŠ” 유효 λ²”μœ„

2️⃣ μ‹λ³„μž(λ³€μˆ˜, ν•¨μˆ˜, 클래슀 이름) μ ‘κ·Ό κ·œμΉ™μ— λ”°λ₯Έ 유효 λ²”μœ„

λ²”μœ„(μŠ€μ½”ν”„)λŠ” μ€‘κ΄„ν˜Έ(블둝) λ˜λŠ” ν•¨μˆ˜μ— μ˜ν•΄ λ‚˜λˆ μ§„λ‹€.

 

μŠ€μ½”ν”„μ˜ μ£Όμš” κ·œμΉ™ ❗

πŸ‘‰ κ·œμΉ™ 1. λΈ”λŸ­ μ•ˆμ˜ λ³€μˆ˜λŠ” λΈ”λŸ­ μ•ˆμ—μ„œλ§Œ μœ νš¨ν•˜λ‹€.

  • λ°”κΉ₯μͺ½ μŠ€μ½”ν”„μ—μ„œ μ„ μ–Έν•œ μ‹λ³„μžλŠ” μ•ˆμͺ½ μŠ€μ½”ν”„μ—μ„œ μ‚¬μš© κ°€λŠ₯
  • 반면, μ•ˆμͺ½μ—μ„œ μ„ μ–Έν•œ μ‹λ³„μžλŠ” λ°”κΉ₯μͺ½ μŠ€μ½”ν”„μ—μ„œλŠ” μ‚¬μš©ν•  수 ❌
  • λΈ”λŸ­ λ‚΄λΆ€μ—μ„œλ§Œ μ‘΄μž¬ν•˜κ³ , λΈ”λŸ­μ΄ λλ‚˜λ©΄ 가비지 컬렉터(GC)에 μ˜ν•΄ μžλ™μœΌλ‘œ μ†Œλ©Έλœλ‹€.
const a = 1;
{
  const b = 2;
  console.log(a); 
}
console.log(b); // 였λ₯˜ λ°œμƒ(app crashed)

 

πŸ‘‰ κ·œμΉ™ 2. μ „μ—­ μŠ€μ½”ν”„ vs 지역 μŠ€μ½”ν”„

  • κ°€μž₯ λ°”κΉ₯μͺ½μ˜ μŠ€μ½”ν”„λ₯Ό μ „μ—­ μŠ€μ½”ν”„(Global Scope)라고 λΆ€λ₯Έλ‹€.
  • 전역이 μ•„λ‹Œ λ‹€λ₯Έ μŠ€μ½”ν”„λŠ” μ „λΆ€ 지역 μŠ€μ½”ν”„(Local Scope)라고 λΆ€λ₯Έλ‹€.
const a = 1; // μ „μ—­ μŠ€μ½”ν”„(Global Scope)
{
  const b = 2; // 지역 μŠ€μ½”ν”„(Local Scope)
  console.log(a);
  {
    const c = 3; // 지역 μŠ€μ½”ν”„(Local Scope)
    console.log(b);
  }
}

 

πŸ‘‰ κ·œμΉ™ 3. 지역 λ³€μˆ˜λŠ” μ „μ—­ λ³€μˆ˜λ³΄λ‹€ μš°μ„ μˆœμœ„κ°€ 더 λ†’λ‹€.

  • μ „μ—­ μŠ€μ½”ν”„μ—μ„œ μ„ μ–Έν•œ λ³€μˆ˜λŠ” μ „μ—­ λ³€μˆ˜μ΄λ‹€.
  • 지역 μŠ€μ½”ν”„μ—μ„œ μ„ μ–Έν•œ λ³€μˆ˜λŠ” 지역 λ³€μˆ˜μ΄λ‹€.
const a = 1;
{
  const a = 2;
  console.log(a);
}
// 좜λ ₯ κ²°κ³Ό: 2

 

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

μŠ€μ½”ν”„μ˜ μ’…λ₯˜λ‘œλŠ” λΈ”λŸ­ μŠ€μ½”ν”„μ™€ ν•¨μˆ˜ μŠ€μ½”ν”„κ°€ μžˆλ‹€.

  •  λΈ”λŸ­ μ™ΈλΆ€μ—μ„œλŠ” λΈ”λŸ­ λ‚΄λΆ€μ˜ λ³€μˆ˜λ₯Ό μ°Έμ‘°ν•  수 ❌
  •  ν•¨μˆ˜ μ™ΈλΆ€μ—μ„œλŠ” ν•¨μˆ˜ λ‚΄λΆ€μ˜ λ³€μˆ˜λ₯Ό μ°Έμ‘°ν•  수 ❌
  •  ν•¨μˆ˜ μ™ΈλΆ€μ—μ„œλŠ” ν•¨μˆ˜μ˜ λ§€κ°œλ³€μˆ˜λ₯Ό μ°Έμ‘°ν•  수 ❌

 

πŸ’‘ 깨달은 점

λ³€μˆ˜λŠ” μ΅œλŒ€ν•œ ν•„μš”ν•œ κ³³μ—μ„œ μ •μ˜ν•΄μ•Ό ν•œλ‹€.

  • 이름 좩돌 방지
  • λ©”λͺ¨λ¦¬ μ ˆμ•½

 

πŸ“š μ°Έμ‘° λ¬Έν—Œ 및 μ‚¬μ΄νŠΈ

https://hanamon.kr/javascript-%EC%8A%A4%EC%BD%94%ED%94%84%EC%99%80-%EB%B3%80%EC%88%98%EC%84%A0%EC%96%B8%ED%82%A4%EC%9B%8C%EB%93%9C-%EC%B0%A8%EC%9D%B4%EC%A0%90/

 

[JavaScript] μŠ€μ½”ν”„(Scope)와 λ³€μˆ˜ μ„ μ–Έ (var, let, const ν‚€μ›Œλ“œ 차이점) - ν•˜λ‚˜λͺ¬

⚑️ μŠ€μ½”ν”„(Scope) μŠ€μ½”ν”„(Scope)λΌλŠ” μ˜μ–΄ 단어 μžμ²΄λŠ” ‘λ²”μœ„’λΌλŠ” 의미λ₯Ό 가진닀. 컴퓨터 곡학, 그리고 JavaScript μ—μ„œλ„ ‘λ²”μœ„’의 의미λ₯Ό 가지고 μžˆλ‹€. JavaScript μ—λ§Œ κ΅­ν•œλœ κ°œλ…μ€ μ•„λ‹ˆλ‹€.  

hanamon.kr