πŸ“’ μŠ€μ½”ν”„(scope) 그리고 letκ³Ό constλ₯Ό 곁듀인...

zooyahoΒ·2022λ…„ 7μ›” 19일
0
post-thumbnail
post-custom-banner

μŠ€μ½”ν”„(scope)

πŸ’‘ μ§€μ—­μ΄λž€ ν•¨μˆ˜ λͺΈμ²΄ λ‚΄λΆ€λ₯Ό λ§ν•œλ‹€.
πŸ’‘ μŠ€μ½”ν”„ μ²΄μΈμ΄λž€ μŠ€μ½”ν”„κ°€ κ³„μΈ΅μ μœΌλ‘œ μ—°κ²°λœ 것을 λ§ν•œλ‹€.

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

  • ν•¨μˆ˜λ₯Ό μ–΄λ””μ„œ μ •μ˜ν–ˆλŠ”μ§€μ— 따라 ν•¨μˆ˜μ˜ μƒμœ„ μŠ€μ½”ν”„λ₯Ό κ²°μ •ν•œλ‹€.
  • μƒμœ„ μŠ€μ½”ν”„κ°€ λ™μ μœΌλ‘œ λ³€ν•˜μ§€ μ•Šκ³  ν•¨μˆ˜ μ •μ˜κ°€ ν‰κ°€λ˜λŠ” μ‹œμ μ— μƒμœ„ μŠ€μ½”ν”„κ°€ μ •μ μœΌλ‘œ κ²°μ •λ˜κΈ° λ•Œλ¬Έμ— 정적 μŠ€μ½”ν”„λΌκ³ λ„ λΆ€λ₯Έλ‹€.
  • ν•¨μˆ˜ μ •μ˜κ°€ μ‹€ν–‰λ˜μ–΄ μƒμ„±λœ ν•¨μˆ˜ κ°μ²΄λŠ” μ΄λ ‡κ²Œ κ²°μ •λœ μƒμœ„ μŠ€μ½”ν”„λ₯Ό κΈ°μ–΅ν•œλ‹€. μ΄λŠ” ν•¨μˆ˜κ°€ 호좜될 λ•Œλ§ˆλ‹€ ν•¨μˆ˜μ˜ μƒμœ„ μŠ€μ½”ν”„λ₯Ό μ°Έμ‘°ν•  ν•„μš”κ°€ 있기 λ•Œλ¬Έμ΄λ‹€.

πŸ‘Ύ#01

var n1 = 1;
var n2 = "a";

function a() {
  var n1 = 2;
  b();
}

function b() {
  var n2 = "b";
  console.log(n1); // 1
  c();
  function c() {
    console.log(n2); // b
  }
}

a();

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

  • ν•¨μˆ˜μ— μ˜ν•΄μ„œλ§Œ 지역 μŠ€μ½”ν”„λ₯Ό μƒμ„±ν•œλ‹€.
  • varν‚€μ›Œλ“œλ‘œ μ„ μ–Έλœ λ³€μˆ˜λŠ” 였직 ν•¨μˆ˜μ˜ μ½”λ“œ 블둝(ν•¨μˆ˜ λͺΈμ²΄)λ§Œμ„ 지역 μŠ€μ½”ν”„λ‘œ μΈμ •ν•œλ‹€. μ΄λŸ¬ν•œ νŠΉμ„±μ„ ν•¨μˆ˜ 레벨 μŠ€μ½”ν”„λΌ ν•œλ‹€.
var i = 10;

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

console.log(i) // 5

πŸ‘‰πŸ» forλ¬Έ μ•ˆμ—μ„œ μ„ μ–Έν•œ iλŠ” μ „μ—­λ³€μˆ˜μ΄λ‹€!

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

  • 블둝 레벨 μŠ€μ½”ν”„λž€ ν•¨μˆ˜ λͺΈμ²΄ 뿐만 μ•„λ‹ˆλΌ λͺ¨λ“  μ½”λ“œ 블둝(if, for, while, try/catch λ“±)이 지역 μŠ€μ½”ν”„λ‘œ μΈμ •ν•œλ‹€.
  • let, constν‚€μ›Œλ“œλ‘œ μ„ μ–Έν•œ λ³€μˆ˜λŠ” 블둝 레벨 μŠ€μ½”ν”„λ₯Ό λ”°λ₯Έλ‹€.
let foo = 1; // μ „μ—­ λ³€μˆ˜

{
  let foo = 2; // 지역 λ³€μˆ˜
  let bar = 3; // 지역 λ³€μˆ˜
}

console.log(foo); // 1
console.log(bar); // error

4. let

  • let ν‚€μ›Œλ“œλ‘œ μ„ μ–Έν•œ λ³€μˆ˜λŠ” 'μ„ μ–Έ 단계'와 'μ΄ˆκΈ°ν™” 단계'κ°€ λΆ„λ¦¬λ˜μ–΄ μ§„ν–‰λ˜λŠ”λ°, 'μ„ μ–Έ 단계'λŠ” λŸ°νƒ€μž„ 이전에 μ‹€ν–‰λ˜κ³  'μ΄ˆκΈ°ν™” 단계'λŠ” λ³€μˆ˜ 선언문에 λ„λ‹¬ν–ˆμ„ λ•Œ μ‹€ν–‰λœλ‹€.

πŸ’‘ μΌμ‹œμ  μ‚¬κ°μ§€λŒ€λž€ μŠ€μ½”ν”„μ˜ μ‹œμž‘ 지점뢀터 μ΄ˆκΈ°ν™” μ‹œμž‘ μ§€μ κΉŒμ§€ λ³€μˆ˜λ₯Ό μ°Έμ‘°ν•  수 μ—†λŠ” ꡬ간을 λ§ν•œλ‹€.

console.log(foo); // ReferenceError

let foo; // λ³€μˆ˜ 선언문에 λ„λ‹¬ν•˜μ—¬ μ΄ˆκΈ°ν™”λ₯Ό 싀행함
console.log(foo); // undefined

foo = 1; // ν• λ‹Ήλ¬Έμ—μ„œ ν• λ‹Ή 단계가 μ‹€ν–‰λœλ‹€
console.log(foo); // 1

5. const

  • letκ³Ό λŒ€λΆ€λΆ„ 동일함.
  • constν‚€μ›Œλ“œλ‘œ μ„ μ–Έν•œ λ³€μˆ˜λŠ” λ°˜λ“œμ‹œ μ„ μ–Έκ³Ό λ™μ‹œμ— μ΄ˆκΈ°ν™”ν•΄μ•Ό ν•œλ‹€.
  • μž¬ν• λ‹Ήμ΄ κΈˆμ§€λœλ‹€!!
  • μž¬ν• λ‹Ήμ΄ κΈˆμ§€λœ λ³€μˆ˜λ₯Ό λ§ν•˜λŠ” λ³€μˆ˜μΈ μƒμˆ˜λŠ”, const ν‚€μ›Œλ“œλ‘œ μ„ μ–Έν•œ λ³€μˆ˜μ— μ›μ‹œ 값을 ν• λ‹Ήν•˜λ©΄ λ§Œλ“€ 수 μžˆλ‹€.(μƒμˆ˜λŠ” 일반적으둜 λŒ€λ¬Έμžλ‘œ μ„ μ–Έν•œλ‹€.)
  • const ν‚€μ›Œλ“œλ‘œ μ„ μ–Έλœ λ³€μˆ˜μ— 객체λ₯Ό ν• λ‹Ήν•œ 경우 값을 λ³€κ²½ν•  수 μžˆλ‹€!! -> μž¬ν• λ‹Ήμ„ λΆˆλ³€ν•  뿐 'λΆˆλ³€'을 μ˜λ―Έν•˜μ§€ μ•ŠλŠ”λ‹€!!
profile
즐겁게 κ°œλ°œν•˜μž μ₯¬μ•Όν˜ΈπŸ‘»
post-custom-banner

0개의 λŒ“κΈ€