λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
TIL -μΌκ°„ν•™μŠ΅κΈ°λ‘/Java Script

3W_JS_μŠ€μ½”ν”„μ™€ ν΄λ‘œμ €

by ___Jin 2021. 11. 25.

<μŠ€μ½”ν”„ Scope> -λ³€μˆ˜ μ ‘κ·Ό κ·œμΉ™μ— λ”°λ₯Έ μœ νš¨λ²”μœ„.

  • μŠ€μ½”ν”„μ˜ μ˜λ―Έμ™€ 적용 λ²”μœ„λ₯Ό 이해할 수 μžˆλ‹€
  • μŠ€μ½”ν”„μ˜ μ£Όμš” κ·œμΉ™μ„ 이해할 수 μžˆλ‹€
    • 쀑첩 κ·œμΉ™
    • block scope와 function scope
    • μ „μ—­ μŠ€μ½”ν”„μ™€ 지역 μŠ€μ½”ν”„
    • μ „μ—­ λ³€μˆ˜μ™€ 지역 λ³€μˆ˜κ°„μ˜ μš°μ„  μˆœμœ„
    • let, const, var 의 차이
    • μ „μ—­ 객체(window)의 이해
let vscope = 'global';
//μ—¬κΈ°λΆ€ν„°
function fscope() {
  let vscope = 'local';
  let lv = local variables';
  alert(lv);
} //μ—¬κΈ°κΉŒμ§€ local scope
fscope();
alert(lv);

 

μŠ€μ½”ν”„ νŠΉμ§•

1. λ°”κΉ₯ μŠ€μ½”ν”„(μ „μ—­ = Global Scope)의 λ³€μˆ˜λŠ” μ•ˆμͺ½μ—μ„œ μ‚¬μš© κ°€λŠ₯ν•˜λ‹€.

2. μ•ˆμͺ½ μŠ€μ½”ν”„(지역 = Local Scope)λŠ” λ°”κΉ₯μͺ½μ—μ„œ μ‚¬μš© λΆˆκ°€λŠ₯ν•˜λ‹€.

3.μŠ€μ½”ν”„λŠ” 쀑첩이 κ°€λŠ₯ν•˜λ‹€.

4. μ•ˆμͺ½ μŠ€μ½”ν”„(지역 = Local Scope)λŠ” 더 높은 μš°μ„ μˆœμœ„λ₯Ό 가진닀.

 

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

 

1. Block scope : μ€‘κ΄„ν˜Έλ‘œ λ‘˜λŸ¬μ‹Ό λ²”μœ„

2. Function scope : ν•¨μˆ˜λ‘œ λ‘˜λŸ¬μ‹Ό λ²”μœ„ ( '=>' ν™”μ‚΄ν‘œ ν•¨μˆ˜λ‘œ λ§Œλ“œλŠ” 것은 λΈ”λ‘μŠ€μ½”ν”„)

 

λ³€μˆ˜ μ„ μ–Έ ν‚€μ›Œλ“œλ³„ 정리

  let const var
μœ νš¨λ²”μœ„ 블둝,ν•¨μˆ˜ μŠ€μ½”ν”„ 블둝,ν•¨μˆ˜ μŠ€μ½”ν”„ ν•¨μˆ˜ μŠ€μ½”ν”„
κ°’ μž¬ν• λ‹Ή κ°€λŠ₯ λΆˆκ°€ κ°€λŠ₯
μž¬μ„ μ–Έ λΆˆκ°€ λΆˆκ°€ κ°€λŠ₯

 μ£Όμ˜μ‚¬ν•­

var의 경우 λ„ˆλ¬΄ λ§Žμ€ μ „μ—­ λ³€μˆ˜μ™€ ,ν•¨μˆ˜κ°€ μƒκΈΈμˆ˜μžˆμ–΄ μ˜λ„ν•˜μ§€μ•Šμ€ side effectκ°€ μƒκΈΈμˆ˜μžˆκ³ ,

varλŠ” λΈ”λ‘μŠ€μ½”ν”„λ₯Ό λ¬΄μ‹œν•˜κ³  ν•¨μˆ˜(ν™”μ‚΄ν‘œ ν•¨μˆ˜ 포함)μŠ€μ½”ν”„λ§Œ λ”°λ₯΄κΈ°λ•Œλ¬Έμ— letν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•˜λŠ”κ²ƒμ„ ꢌμž₯ν•œλ‹€.

(let은 블둝 λ‹¨μœ„λ‘œ μŠ€μ½”ν”„λ₯Ό κ΅¬λΆ„ν• λ•Œ 예츑 κ°€λŠ₯ν•œ μ½”λ“œλ₯Ό λ§Œλ“€μˆ˜μžˆλ‹€.)

 

κΏ€νŒ : JS 파일 상단에 use strictλ₯Ό μ‚¬μš©ν•˜λ©΄  λΈŒλΌμš°μ €κ°€ λ³€μˆ˜λͺ…이 κ°™μ€μ—λŸ¬λΆ€λΆ„μ„ μ—„κ²©ν•˜κ²Œ μž‘μ•„μ€€λ‹€κ³  ν•œλ‹€.

'use strict';

 

 

<ν΄λ‘œμ € Closure> -μ™ΈλΆ€ν•¨μˆ˜μ˜ λ³€μˆ˜μ— μ ‘κ·Όν• μˆ˜μžˆλŠ” λ‚΄λΆ€ν•¨μˆ˜

  • ν΄λ‘œμ € ν•¨μˆ˜μ˜ μ •μ˜μ™€ νŠΉμ§•μ— λŒ€ν•΄μ„œ 이해할 수 μžˆλ‹€
  • ν΄λ‘œμ €κ°€ κ°–λŠ” μŠ€μ½”ν”„ λ²”μœ„λ₯Ό 이해할 수 μžˆλ‹€
  • ν΄λ‘œμ €λ₯Ό μ΄μš©ν•΄ μœ μš©ν•˜κ²Œ μ“°μ΄λŠ” λͺ‡ 가지 μ½”λ”© νŒ¨ν„΄μ„ 이해할 수 μžˆλ‹€
     

ν΄λ‘œμ € ν•¨μˆ˜ νŠΉμ§•

1. ν•¨μˆ˜λ₯Ό λ¦¬ν„΄ν•˜λŠ” ν•¨μˆ˜μ΄λ‹€.

2. μ™ΈλΆ€ν•¨μˆ˜μ˜ λ³€μˆ˜μ— μ ‘κ·Όκ°€λŠ₯ν•œ λ‚΄λΆ€ ν•¨μˆ˜μ΄λ‹€.

3. 데이터λ₯Ό λ³΄μ‘΄ν•˜λŠ” ν•¨μˆ˜μ΄λ‹€.

4.ν΄λ‘œμ € λͺ¨λ“ˆνŒ¨ν„΄ (ν•¨μˆ˜μ˜ μž¬μ‚¬μš©μ„±μ„ κ·ΉλŒ€ν™”ν•˜μ—¬ ν•¨μˆ˜ν•˜λ‚˜λ₯Ό μ™„μ „νžˆ 독립적인 λΆ€ν’ˆν˜•νƒœλ‘œ λΆ„λ¦¬ν•œλ‹€.)

 

!!잘 λͺ¨λ₯΄κ² μœΌλ©΄ 일단 μ΄λ ‡κ²Œ μƒκ°ν•˜μž

'ν•¨μˆ˜ λ‚΄μ—μ„œ λ‹€λ₯Έ ν•¨μˆ˜(λ‚΄λΆ€ ν•¨μˆ˜)κ°€ 리턴이 되면, 이 ν•¨μˆ˜λ₯Ό 클둜져 ν•¨μˆ˜λΌκ³  λΆ€λ₯΄κ³ , μ™ΈλΆ€ ν•¨μˆ˜μ— μžˆλŠ” λ³€μˆ˜μ— μ ‘κ·Ό κ°€λŠ₯ν•˜κ΅¬λ‚˜'

 

 

 


μ–Όλ§Œ μ•ˆλ˜λŠ” 짧은 μ‹œκ°„ κ³΅λΆ€ν•˜λ©΄μ„œ κ°œλ…μ΄ν•΄μ™€ κ°„λ‹¨ν•œ μ˜ˆμ œμ •λ„λŠ” ν’€μ–΄μ™”λŠ”λ°,

μŠ€μ½”ν”„μ™€ ν΄λ‘œμ €λŠ” μ˜ˆμ œμ— 손도 λͺ»λŒ€κ³  μ½˜μ†”μ°½μ— ν•˜λ‚˜ν•˜λ‚˜ μ°μ–΄μ„œ 닡을 ν™•μΈν–ˆλ‹€.

 

μ•½κ°„ κ°œλ°œκ³΅λΆ€ ν΄λ‘œμ €μ™€ ν•¨κ»˜ 클둜즈 ν• λ»”ν–ˆλŠ”λ°...

체크포인트 리뷰 ν¬λ£¨λ‹˜μ΄ λ§ν•˜κΈΈ..  ν•œλ²ˆμ— μ΄ν•΄ν•˜λ©΄ μ²œλ…„μ— ν•œλ²ˆ λ‚˜νƒ€λ‚˜λŠ” 개발자라고 ν•˜μ‹¬...γ…Žγ…Ž

 

μŠ€μ½”ν”„μ™€ ν΄λ‘œμ € ν—·κ°ˆλ¦΄λ•ŒλŠ”

1.  지역 / μ „μ—­ μŠ€μ½”ν”„ λ‚˜λˆ„κΈ°.

2. μ„ μ–Έ λ³€μˆ˜ μ°Ύκ³  지역 선언인지/ μ „μ—­ 선언인지 μ°ΎκΈ°.

3. μ„ μ–Έλ˜μ§€μ•Šμ€ λ³€μˆ˜κ°€ κ°€λ¦¬ν‚€λŠ” λŒ€μƒμ•ˆμ—μ„œ λΆ€ν„° λ°–μœΌλ‘œ μ°ΎκΈ°. (내뢀선언이 있으면 κ±°κΈ°μ„œ 끝냄)

 

라고,, ν•˜μ…¨μ§€λ§Œ μ‹€μ œλ‘œ 예제 보면 "μ•„λ‹ˆ... λ‹ˆκ°€ μ™œ μ—¬κΈ°μ„œλ‚˜μ™€....." x 100000000

 

λ‚΄κ°€ ν—·κ°ˆλ¦¬λŠ” 뢀뢄은 μ„ μ–Έμ—†λŠ” λ‚΄λΆ€ λ³€μˆ˜κ°€ 값을 μ°Ύμ•„ μ–΄λ””λ‘œ κ°€μ•Όν•˜λŠ”μ§€ μ™œ xμ°Ύλ‹€κ°€ μ–΄λŠμˆœκ°„ y에 μ™œ 할당을 μ£Όκ²Œλœκ²ƒμΈμ§€...  

let x = 30;
function getnumber(x){  //μ΄λΆ€λΆ„μ˜ xκ°€ νŽ‘μ…˜μ— μ€€ λ§€κ°œλ³€μˆ˜λΌμ„œ let = x; 둜 μ΄ν•΄ν•΄μ•Όν•œλ‹¨λ‹€
 return x;
}

 

 κ·Έλ¦¬κ³  리턴을 ν•΄μ„œ μ–΄λ””λ‘œ κ°€μ•Όν•˜μ£  아저씨 μš°λŠ”μ†λ‹˜μ΄ μ²˜μŒμΈκ°€μš”...

 

ν•˜μ§€λ§Œ λ‹€ν–‰νžˆλ„...

큰일을 보면 μž‘μ€μΌμ΄ ν•΄κ²°λ˜λ“―μ΄ ^^ 

이녀석듀도 더 μ–΄λ €μš΄ κ°œλ…λ“€μ„ λ§Œλ‚˜λ©΄ 점차 이해가 κ°„λ‹€κ³  ν•˜λ‹ˆ 기닀렀봐야겠닀..

 

더 μ‰¬μ›Œμ§€λŠ”κ±΄ μ—†λ‹€. λ‡Œκ°€ ν˜Ήμ‚¬ν•˜λ“―μ΄ κ³΅λΆ€ν•˜λ©΄ μ–Έμ  κ°€ λ‡Œμ—μ„œ μ•Œμ•„μ„œ μ—°κ²°ν•œλ‹€ . ν™”μ΄νŒ….

 

'TIL -μΌκ°„ν•™μŠ΅κΈ°λ‘ > Java Script' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

3W_JS_ν΄λ‘œμ €ν•¨μˆ˜  (0) 2021.12.29
3W_JS_Scope  (0) 2021.12.29
3W_JS_Method  (0) 2021.11.25
1W _JS_쑰건문  (0) 2021.11.15
1W _JS_ λ³€μˆ˜, νƒ€μž…  (0) 2021.11.10

λŒ“κΈ€