λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
javascript/πŸ“– study

[μŠ€ν„°λ”” 1μ£Όμ°¨] 4μž₯ λ³€μˆ˜

by HomieKim 2022. 2. 4.

 

 

λͺ¨λ˜ μžλ°”μŠ€ν¬λ¦½νŠΈ deep-dive μŠ€ν„°λ”” λ‚΄μš© μ •λ¦¬ν•œ 것 μž…λ‹ˆλ‹€.

4μž₯ λ³€μˆ˜

λ³€μˆ˜λž€?

μ»΄ν“¨ν„°λŠ” CPUλ₯Ό μ‚¬μš©ν•΄ μ—°μ‚°ν•˜κ³  λ©”λͺ¨λ¦¬λ₯Ό μ‚¬μš©ν•΄ 데이터λ₯Ό κΈ°μ–΅ν•œλ‹€.

  • λ³€μˆ˜(variable)λŠ” ν•˜λ‚˜μ˜ 값을 μ €μž₯ν•˜κΈ° μœ„ν•΄ ν™•λ³΄ν•œ λ©”λͺ¨λ¦¬ 곡간 자체 λ˜λŠ” κ·Έ λ©”λͺ¨λ¦¬ 곡간을 μ‹λ³„ν•˜κΈ° μœ„ν•΄ 뢙인 이름
  • κ°’μ˜ μœ„μΉ˜λ₯Ό κ°€λ¦¬ν‚€λŠ” 상징적인 이름
  • λ³€μˆ˜μ— 값을 μ €μž₯ν•˜λŠ” 것을 ν• λ‹Ή(assignment)(λŒ€μž…, μ €μž₯)이라 ν•˜κ³  λ³€μˆ˜μ— μ €μž₯된 값을 읽어 λ“€μ΄λŠ” 것을 μ°Έμ‘°(reference)라고 ν•©λ‹ˆλ‹€.

μ‹λ³„μž(Identifier)

  • λ³€μˆ˜μ˜ 이름을 μ‹λ³„μž 라고함
  • μ‹λ³„μžλŠ” μ–΄λ–€ 값이 μ €μž₯λ˜μ–΄ μžˆλŠ” λ©”λͺ¨λ¦¬ μ£Όμ†Œλ₯Ό κΈ°μ–΅ν•˜κ³  μžˆλ‹€js μ—μ„œ λ³€μˆ˜, ν•¨μˆ˜ 클래슀 이름은 λͺ¨λ‘ μ‹λ³„μž

λ³€μˆ˜ μ„ μ–Έ

  • λ³€μˆ˜λ₯Ό μ‚¬μš©ν•˜λ €λ©΄ λ°˜λ“œμ‹œ μ„ μ–Έ 이 ν•„μš” (λ©”λͺ¨λ¦¬ 곡간 확보)
  • var, let, const ν‚€μ›Œλ“œ μ‚¬μš©
  • λ³€μˆ˜ 선언은 μ„ μ–Έ 단계와 μ΄ˆκΈ°ν™” 단계에 거쳐 μˆ˜ν–‰μ„ μ–Έλ‹¨κ³„ : λ³€μˆ˜ 이름을 λ“±λ‘ν•΄μ„œ μžλ°”μŠ€ν¬λ¦½νŠΈ 엔진에 λ³€μˆ˜μ˜ 쑴재λ₯Ό μ•Œλ¦Ό
    μ΄ˆκΈ°ν™” 단계 : 값을 μ €μž₯ν•˜κΈ° μœ„ν•œ λ©”λͺ¨λ¦¬ 곡간을 ν™•λ³΄ν•˜κ³  μ•”λ¬΅μ μœΌλ‘œ undefinedλ₯Ό ν• λ‹Ήν•΄ μ΄ˆκΈ°ν™” 함
  • μ„ μ–Έλ˜μ§€ μ•Šμ€ μ‹λ³„μžμ— μ ‘κ·Όν•˜λ©΄ μ°Έμ‘° μ—λŸ¬κ°€ λ°œμƒ!

ν˜Έμ΄μŠ€νŒ…

  • μ •μ˜ : λ³€μˆ˜ 선언문이 μ½”λ“œμ˜ μ„ λ‘λ‘œ λŒμ–΄ μ˜¬λ €μ§„ κ²ƒμ²˜λŸΌ λ™μž‘ν•˜λŠ” js 고유의 νŠΉμ§•
  • λ³€μˆ˜ 선언은 λŸ°νƒ€μž„ 이전에 λ¨Όμ € μ‹€ν–‰λœλ‹€!var, let, const, function, function*, class ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•΄μ„œ μ„ μ–Έν•˜λŠ” λͺ¨λ“  μ‹λ³„μžλŠ” ν˜Έμ΄μŠ€νŒ… λœλ‹€.

κ°’μ˜ ν• λ‹Ή

  • λ³€μˆ˜μ˜ 선언은 λŸ°νƒ€μž„ 이전에 μ‹€ν–‰
  • κ°’μ˜ 할당은 λŸ°νƒ€μž„μ— μ‹€ν–‰ (μ½”λ“œ μœ„μ—μ„œλΆ€ν„° 순차적으둜 μ‹€ν–‰)
console.log(score); // undefined

score = 80; // κ°’μ˜ ν• λ‹Ή
var score; // λ³€μˆ˜ μ„ μ–Έ

console.log(score); // 80

κ°’μ˜ μž¬ν• λ‹Ή

  • constλŠ” μž¬ν• λ‹Ή λΆˆκ°€!
  • μž¬ν• λ‹Ή μ‹œ 이전 값이 μ €μž₯λ˜μ–΄ 있던 곡간을 μ§€μš°κ³  κ·Έ λ©”λͺ¨λ¦¬μ— 값을 ν• λ‹Ήν•˜λŠ” 것이 μ•„λ‹ˆλΌ μƒˆλ‘œμš΄ λ©”λͺ¨λ¦¬ 곡간을 ν™•λ³΄ν•˜κ³  값을 μ§€μš΄λ‹€
  • 이전에 ν• λ‹Ήλœ κ°’(undefined 포함)듀은 μ–΄λ– ν•œ μ‹λ³„μžλž‘λ„ 맀핑 λ˜μžˆμ§€ μ•ŠμœΌλ©΄ κ°€λΉ„μ§€μ½œλ ‰ν„°μ— μ˜ν•΄ λ©”λͺ¨λ¦¬μ—μ„œ μžλ™ ν•΄μ œλœλ‹€.

λŒ“κΈ€