JavaScript

μŠ€μ½”ν”„

presentKey 2023. 12. 9. 23:37

🚩 μŠ€μ½”ν”„

  • μ‹λ³„μžκ°€ μœ νš¨ν•œ λ²”μœ„
  • μžλ°”μŠ€ν¬λ¦½νŠΈ 엔진이 μ‹λ³„μžλ₯Ό 검색할 λ•Œ μ‚¬μš©ν•˜λŠ” κ·œμΉ™

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

  • μ „μ—­ μŠ€μ½”ν”„
    • μ½”λ“œμ˜ κ°€μž₯ λ°”κΉ₯ μ˜μ—­
    • 전역에 λ³€μˆ˜λ₯Ό μ„ μ–Έν•˜λ©΄ μ „μ—­ μŠ€μ½”ν”„λ₯Ό κ°–λŠ” μ „μ—­ λ³€μˆ˜ → μ–΄λ””μ„œλ“ μ§€ μ°Έμ‘°ν•  수 μžˆλ‹€.
  • 지역 μŠ€μ½”ν”„
    • ν•¨μˆ˜ λͺΈμ²΄ λ‚΄λΆ€
    • 지역에 λ³€μˆ˜λ₯Ό μ„ μ–Έν•˜λ©΄ 지역 μŠ€μ½”ν”„λ₯Ό κ°–λŠ” 지역 λ³€μˆ˜ → μžμ‹ μ˜ 지역 μŠ€μ½”ν”„μ™€ ν•˜μœ„ 지역 μŠ€μ½”ν”„μ—μ„œ μœ νš¨ν•˜λ‹€.

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

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

var i = 10;

for (var i = 0; i < 5; i++) {
  console.log(i); // 0 1 2 3 4
}

console.log(i) // 5

 

🚩 블둝 레벨 μŠ€μ½”ν”„

let, const ν‚€μ›Œλ“œλ‘œ μ„ μ–Έλœ λ³€μˆ˜λŠ” λͺ¨λ“  μ½”λ“œ 블둝(ν•¨μˆ˜, if λ¬Έ, for λ¬Έ, while λ¬Έ, try/catch λ¬Έ λ“±)을 μ§€μ—­μŠ€μ½”ν”„λ‘œ μΈμ •ν•©λ‹ˆλ‹€.

let i = 10;

for (let i = 0; i<5; i++) {
  console.log(i); // 0 1 2 3 4
}

console.log(i); // 10

 

🚩 λ ‰μ‹œμ»¬ μŠ€μ½”ν”„

var x = 1;

function foo() {
  var x = 10;
  bar();
}

function bar() {
  console.log(x);
}

foo(); // 1
bar(); // 1

 

μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” ν•¨μˆ˜λ₯Ό μ–΄λ””μ„œ μ •μ˜ν–ˆλŠ”μ§€μ— 따라 ν•¨μˆ˜μ˜ μƒμœ„ μŠ€μ½”ν”„λ₯Ό κ²°μ •ν•˜λŠ” λ ‰μ‹œμ»¬ μŠ€μ½”ν”„λ₯Ό λ”°λ¦…λ‹ˆλ‹€.

ν•¨μˆ˜κ°€ 호좜된 μœ„μΉ˜λŠ” μƒμœ„ μŠ€μ½”ν”„ 결정에 μ–΄λ– ν•œ 영ν–₯도 주지 μ•ŠμŠ΅λ‹ˆλ‹€.

 

bar ν•¨μˆ˜λŠ” μ „μ—­μ—μ„œ μ •μ˜λœ ν•¨μˆ˜μž…λ‹ˆλ‹€. bar ν•¨μˆ˜λŠ” μ „μ—­ μ½”λ“œκ°€ μ‹€ν–‰λ˜κΈ° 전에 λ¨Όμ € ν‰κ°€λ˜μ–΄ ν•¨μˆ˜ 객체λ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.

μ΄λ•Œ μƒμ„±λœ bar ν•¨μˆ˜ κ°μ²΄λŠ” μžμ‹ μ΄ μ •μ˜λœ μŠ€μ½”ν”„, 즉 μ „μ—­ μŠ€μ½”ν”„λ₯Ό κΈ°μ–΅ν•©λ‹ˆλ‹€.

그리고, bar ν•¨μˆ˜κ°€ 호좜되면 호좜된 곳이 어디인지 관계없이 μ–Έμ œλ‚˜ μžμ‹ μ΄ κΈ°μ–΅ν•˜κ³  μžˆλŠ” μ „μ—­ μŠ€μ½”ν”„λ₯Ό μƒμœ„ μŠ€μ½”ν”„λ‘œ μ‚¬μš©ν•©λ‹ˆλ‹€. λ”°λΌμ„œ μ „μ—­ λ³€μˆ˜ x의 κ°’ 1을 두 번 좜λ ₯ν•©λ‹ˆλ‹€.

 

🚩 참고

  • λͺ¨λ˜ μžλ°”μŠ€ν¬λ¦½νŠΈ Deep Dive 13μž₯