πŸ“•μ±…/λ”₯λ‹€μ΄λΈŒ

14μž₯ μ „μ—­ λ³€μˆ˜μ˜ 문제점

eazyseon 2023. 11. 20. 23:46
λ°˜μ‘ν˜•

14.1 λ³€μˆ˜μ˜ 생λͺ… μ£ΌκΈ°

μ „μ—­ λ³€μˆ˜μ˜ 생λͺ… μ£ΌκΈ°λŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ 생λͺ… 주기와 κ°™λ‹€.

ν•¨μˆ˜ λ‚΄λΆ€μ—μ„œ μ„ μ–Έλœ μ§€μ—­ λ³€μˆ˜λŠ” ν•¨μˆ˜κ°€ 호좜되면 μƒμ„±λ˜κ³  μ’…λ£Œν•˜λ©΄ μ†Œλ©Έν•œλ‹€.

function foo(){
  var x = 'local';//λ³€μˆ˜ x 생성,ν• λ‹Ή
  console.log(x);
  return x;//λ³€μˆ˜ x μ†Œλ©Έ
}

foo();
console.log(x)//ReferenceError: x is not defined

 

μ§€μ—­ λ³€μˆ˜μ˜ 생λͺ… μ£ΌκΈ°λŠ” ν•¨μˆ˜μ˜ 생λͺ… 주기와 μΌμΉ˜ν•œλ‹€. 

var x = 'global';

function foo(){
  console.log(x);//undefined
  var x = 'local';
}

foo();
console.log(x)//'global'

 

μœ„ 예제λ₯Ό 톡해 ν˜Έμ΄μŠ€νŒ…μ€ μŠ€μ½”ν”„ λ‹¨μœ„λ‘œ λ™μž‘ν•˜λŠ” 것을 μ•Œ 수 μžˆλ‹€. 

 

14.2 μ „μ—­ λ³€μˆ˜μ˜ 문제점

- μ „μ—­ λ³€μˆ˜λ₯Ό μ„ μ–Έν•œ μ˜λ„λŠ” μ½”λ“œ μ–΄λ””μ„œλ“  λ³€μˆ˜λ₯Ό μ°Έκ³ ν•˜κ³  λ³€κ²½ν•  수 μžˆλ‹€λŠ” 암묡적 결합을 ν—ˆμš©ν•˜λŠ” 것이닀. 

- μ „μ—­ λ³€μˆ˜λŠ” 생λͺ… μ£ΌκΈ°κ°€ κΈΈμ–΄ λ©”λͺ¨λ¦¬λ„ 였랜 κΈ°κ°„ μ†ŒλΉ„ν•œλ‹€. 

- μŠ€μ½”ν”„ 체인 μƒμ—μ„œ 쒅점에 μ‘΄μž¬ν•˜λ―€λ‘œ 검색 속도가 κ°€μž₯ λŠλ¦¬λ‹€. 

- λ„€μž„μŠ€νŽ˜μ΄μŠ€ μ˜€μ—Ό(λ‹€λ₯Έ 파일 λ‚΄μ—μ„œ λ™μΌν•œ μ΄λ¦„μœΌλ‘œ λͺ…λͺ…λ˜μ—ˆμ„ κ²½μš°κ°€ λ°œμƒν•  수 μžˆλ‹€.)

 

14.3 μ „μ—­ λ³€μˆ˜μ˜ μ‚¬μš©μ„ μ–΅μ œν•˜λŠ” 방법

λ³€μˆ˜μ˜ μŠ€μ½”ν”„λ₯Ό μ’μ„μˆ˜λ‘ μ’‹λ‹€. 

- μ¦‰μ‹œ μ‹€ν–‰ ν•¨μˆ˜

μ¦‰μ‹œ μ‹€ν–‰ ν•¨μˆ˜λ‘œ 감싸면 λͺ¨λ“  λ³€μˆ˜λŠ” μ¦‰μ‹œ μ‹€ν–‰ ν•¨μˆ˜μ˜ μ§€μ—­ λ³€μˆ˜κ°€ λœλ‹€. 

- λ„€μž„μŠ€νŽ˜μ΄μŠ€ 객체 (객체λ₯Ό μƒμ„±ν•˜κ³  μ „μ—­ λ³€μˆ˜μ²˜λŸΌ μ‚¬μš©ν•˜κ³  싢은 λ³€μˆ˜λ₯Ό ν”„λ‘œνΌν‹°λ‘œ μΆ”κ°€ν•˜λŠ” 방법이닀.)

var MYAPP = {};

MYAPP.name = 'Lee';

console.log(MYAPP.name)//Lee

 

- λͺ¨λ“ˆ νŒ¨ν„΄ 

 

- ES6 λͺ¨λ“ˆ

파일 자체의 λ…μžμ μΈ λͺ¨λ“ˆ μŠ€μ½”ν”„λ₯Ό μ œκ³΅ν•œλ‹€. 

λ°˜μ‘ν˜•