πŸ“š12μ£Όμ°¨ μŠ€ν„°λ”” μ€€λΉ„[15μž₯ let, const ν‚€μ›Œλ“œμ™€ 블둝 레벨 μŠ€μ½”ν”„]

pjw__98Β·2024λ…„ 2μ›” 23일
1
post-thumbnail

πŸ“šμŠ€ν„°λ”” λͺ…

λͺ¨λ˜ν•  수 μžˆλŠ”κ±° λ§žλŠ”κ±°λ‹ˆ?

πŸ“† ν•™μŠ΅ λ‚ μ§œ

2024/02/24(ν† ) 1:00 PM

πŸ“– 12μ£Όμ°¨ ν•™μŠ΅ λ²”μœ„

15μž₯ let,const ν‚€μ›Œλ“œμ™€ 블둝 레벨 μŠ€μ½”ν”„(208.page ~ 218.page)

🎯 varν‚€μ›Œλ“œλ₯Ό μ§€μ–‘ν•˜λŠ” 이유

πŸ“Œ var ν‚€μ›Œλ“œ

λ³€μˆ˜ 쀑볡 μ„ μ–Έ ν—ˆμš©
λ§Œμ•½ λ™μΌν•œ μ΄λ¦„μ˜ λ³€μˆ˜κ°€ 이미 μ„ μ–Έλ˜μ–΄ μžˆλŠ” 것을 λͺ¨λ₯΄κ³  λ³€μˆ˜λ₯Ό 쀑볡 μ„ μ–Έν•˜λ©΄μ„œ κ°’κΉŒμ§€ ν• λ‹Ήν–ˆλ‹€λ©΄ μ˜λ„μΉ˜ μ•Šκ²Œ λ¨Όμ € μ„ μ–Έλœ λ³€μˆ˜ 값이 λ³€κ²½λ˜λŠ” λΆ€μž‘μš©μ΄ λ°œμƒν•œλ‹€.


ν•¨μˆ˜ 레벨 μŠ€μ½”ν”„
var ν‚€μ›Œλ“œλ‘œ μ„ μ–Έν•œ λ³€μˆ˜λŠ” μ˜€λ‘œμ§€ ν•¨μˆ˜μ˜ μ½”λ“œ λΈ”λ‘λ§Œμ„ μ§€μ—­ μŠ€μ½”ν”„λ‘œ μΈμ •ν•œλ‹€.
λ”°λΌμ„œ μ™ΈλΆ€μ—μ„œ var ν‚€μ›Œλ“œλ‘œ μ„ μ–Έν•œ λ³€μˆ˜λŠ” μ½”λ“œ 블둝 λ‚΄μ—μ„œ 선언해도 λͺ¨λ‘ μ „μ—­ λ³€μˆ˜κ°€ λœλ‹€.
μ΄λŸ¬ν•œ ν•¨μˆ˜ 레벨 μŠ€μ½”ν”„λŠ” μ „μ—­ λ³€μˆ˜λ₯Ό λ‚¨λ°œν•  κ°€λŠ₯성을 높인닀.즉, μ˜λ„μΉ˜ μ•Šκ²Œ μ „μ—­ λ³€μˆ˜κ°€ 쀑볡 μ„ μ–Έλ˜λŠ” κ²½μš°κ°€ λ°œμƒν•  수 μžˆλ‹€.


λ³€μˆ˜ ν˜Έμ΄μŠ€νŒ…
var ν‚€μ›Œλ“œλ‘œ μ„ μ–Έν•œ λ³€μˆ˜λŠ” λŸ°νƒ€μž„ 이전에 μžλ°”μŠ€ν¬λ¦½νŠΈ 엔진에 μ˜ν•΄ μ•”λ¬΅μ μœΌλ‘œ μ„ μ–Έ 단계와 μ΄ˆκΈ°ν™” 단계가 ν•œλ²ˆμ— μ§„ν–‰λœλ‹€.
μ„ μ–Έ λ‹¨κ³„μ—μ„œ μŠ€μ½”ν”„(μ‹€ν–‰ μ»¨ν…μŠ€νŠΈμ˜ λ ‰μ‹œμ»¬ ν™˜κ²½)에 λ³€μˆ˜ μ‹λ³„μžλ₯Ό 등둝해 μžλ°”μŠ€ν¬λ¦½νŠΈ 엔진에 λ³€μˆ˜μ˜ 쑴재λ₯Ό μ•Œλ¦°λ‹€.그리고 μ¦‰μ‹œ μ΄ˆκΈ°ν™” λ‹¨κ³„μ—μ„œ undefined둜 λ³€μˆ˜λ₯Ό μ΄ˆκΈ°ν™”ν•œλ‹€.
λ”°λΌμ„œ λ³€μˆ˜ μ„ μ–Έλ¬Έ 이전에 λ³€μˆ˜μ— 접근해도 μŠ€μ½”ν”„μ— λ³€μˆ˜κ°€ μ‘΄μž¬ν•˜κΈ° λ•Œλ¬Έμ— μ—λŸ¬κ°€ λ°œμƒν•˜μ§€ μ•Šκ³  undefinedλ₯Ό λ°˜ν™˜ν•œλ‹€. 이후 λ³€μˆ˜ 할당문에 λ„λ‹¬ν•˜λ©΄ λΉ„λ‘œμ†Œ 값이 ν• λ‹Ήλœλ‹€.
즉, var ν‚€μ›Œλ“œλ‘œ λ³€μˆ˜λ₯Ό μ„ μ–Έν•˜λ©΄ λ³€μˆ˜ ν˜Έμ΄μŠ€νŒ…μ— μ˜ν•΄ λ³€μˆ˜ 선언문이 μŠ€μ½”ν”„μ˜ μ„ λ‘λ‘œ λŒμ–΄ μ˜¬λ €μ§„ κ²ƒμ²˜λŸΌ λ™μž‘ν•œλ‹€.
λ³€μˆ˜ μ„ μ–Έλ¬Έ 이전에 λ³€μˆ˜λ₯Ό μ°Έμ‘°ν•˜λŠ” 것은 λ³€μˆ˜ ν˜Έμ΄μŠ€νŒ…μ— μ˜ν•΄ μ—λŸ¬λ₯Ό λ°œμƒμ‹œν‚€μ§€λŠ” μ•Šμ§€λ§Œ ν”„λ‘œκ·Έλž¨μ˜ 흐름상 λ§žμ§€ μ•Šκ³  가독성을 λ–¨μ–΄λœ¨λ¦¬κ³  였λ₯˜λ₯Ό λ°œμƒμ‹œν‚¬ μœ„ν—˜μ΄ μžˆλ‹€.

ES6에 λ„μž…λœ let , const

πŸ“Œ let ν‚€μ›Œλ“œμ˜ νŠΉμ§•

λ³€μˆ˜ 쀑볡 μ„ μ–Έ κΈˆμ§€
var ν‚€μ›Œλ“œμ™€ 달리 λ™μΌν•œ λ³€μˆ˜λ₯Ό 쀑볡 μ„ μ–Έν•˜λ©΄ 문법 μ—λŸ¬(SyntaxError)κ°€ λ°œμƒν•œλ‹€.


블둝 레벨 μŠ€μ½”ν”„
var ν‚€μ›Œλ“œμ™€ 달리 let ν‚€μ›Œλ“œλŠ” λͺ¨λ“  μ½”λ“œ 블둝을 μ§€μ—­ μŠ€μ½”ν”„λ‘œ μΈμ •ν•˜λŠ” 블둝 레벨 μŠ€μ½”ν”„λ₯Ό λ”°λ₯Έλ‹€.


λ³€μˆ˜ ν˜Έμ΄μŠ€νŒ…
var ν‚€μ›Œλ“œμ™€ 달리 let ν‚€μ›Œλ“œλ‘œ μ„ μ–Έν•œ λ³€μˆ˜λ₯Ό λ³€μˆ˜ μ„ μ–Έλ¬Έ 이전에 μ°Έμ‘°ν•˜λ©΄ μ°Έμ‘° μ—λŸ¬κ°€ λ°œμƒν•œλ‹€.
let ν‚€μ›Œλ“œλ‘œ μ„ μ–Έν•œ λ³€μˆ˜λŠ” μ„ μ–Έ 단계와 μ΄ˆκΈ°ν™” 단계가 λΆ„λ¦¬λ˜μ–΄ μ§„ν–‰λœλ‹€.
즉, λŸ°νƒ€μž„ 이전에 μžλ°”μŠ€ν¬λ¦½νŠΈ 엔진에 μ˜ν•΄ μ•”λ¬΅μ μœΌλ‘œ μ„ μ–Έ 단계가 λ¨Όμ € μ‹€ν–‰λ˜μ§€λ§Œ μ΄ˆκΈ°ν™” λ‹¨κ³„λŠ” λ³€μˆ˜ 선언문에 λ„λ‹¬ν–ˆμ„ λ•Œ μ‹€ν–‰λœλ‹€.
이처럼 var ν‚€μ›Œλ“œμ™€ 달리 let ν‚€μ›Œλ“œλ‘œ μ„ μ–Έν•œ λ³€μˆ˜λŠ” λ³€μˆ˜ ν˜Έμ΄μŠ€νŒ…μ΄ λ°œμƒν•˜μ§€ μ•ŠλŠ”κ²ƒμ²˜λŸΌ λ™μž‘ν•˜μ§€λ§Œ κ·Έλ ‡μ§€μ•Šλ‹€.
let ν‚€μ›Œλ“œλ‘œ μ„ μ–Έν•œ λ³€μˆ˜μ˜ 경우 λ³€μˆ˜ ν˜Έμ΄μŠ€νŒ…μ΄ λ°œμƒν•˜μ§€ μ•ŠλŠ”λ‹€λ©΄ μœ„ μ˜ˆμ œλŠ” μ „μ—­ λ³€μˆ˜ foo의 값을 좜λ ₯ν•΄μ•Ό ν•œλ‹€. ν•˜μ§€λ§Œ let ν‚€μ›Œλ“œλ‘œ μ„ μ–Έν•œ λ³€μˆ˜λ„ μ—¬μ „νžˆ ν˜Έμ΄μŠ€νŒ…μ΄ λ°œμƒν•˜κΈ° λ•Œλ¬Έμ— μ°Έμ‘° μ—λŸ¬(ReferenceError)κ°€ λ°œμƒν•œλ‹€.

πŸ“Œ const ν‚€μ›Œλ“œμ˜ νŠΉμ§•

const ν‚€μ›Œλ“œλŠ” μƒμˆ˜(constant)λ₯Ό μ„ μ–Έν•˜κΈ° μœ„ν•΄ μ‚¬μš©ν•œλ‹€.ν•˜μ§€λ§Œ λ°˜λ“œμ‹œ μƒμˆ˜λ§Œμ„ μœ„ν•΄ μ‚¬μš©ν•˜μ§€ μ•ŠλŠ”λ‹€.
μƒμˆ˜λŠ” μƒνƒœ μœ μ§€μ™€ 가독성,μœ μ§€λ³΄μˆ˜μ˜ 편의λ₯Ό μœ„ν•΄ 적극적으둜 μ‚¬μš©ν•΄μ•Ό ν•œλ‹€.
const ν‚€μ›Œλ“œμ˜ νŠΉμ§•μ— λŒ€ν•΄ μ‚΄νŽ΄λ³΄μž.

μ„ μ–Έκ³Ό μ΄ˆκΈ°ν™”
"const ν‚€μ›Œλ“œλ‘œ μ„ μ–Έν•œ λ³€μˆ˜λŠ” λ°˜λ“œμ‹œ μ„ μ–Έκ³Ό λ™μ‹œμ— μ΄ˆκΈ°ν™”ν•΄μ•Ό ν•œλ‹€."
κ·Έλ ‡μ§€ μ•ŠμœΌλ©΄ 문법 μ—λŸ¬κ°€ λ°œμƒν•œλ‹€.
const ν‚€μ›Œλ“œλ‘œ μ„ μ–Έν•œ λ³€μˆ˜λŠ” let ν‚€μ›Œλ“œλ‘œ μ„ μ–Έν•œ λ³€μˆ˜μ™€ λ§ˆμ°¬κ°€μ§€λ‘œ 블둝 레벨 μŠ€μ½”ν”„λ₯Ό κ°€μ§€λ©°, λ³€μˆ˜ ν˜Έμ΄μŠ€νŒ…μ΄ λ°œμƒν•˜μ§€ μ•ŠλŠ” κ²ƒμ²˜λŸΌ λ™μž‘ν•œλ‹€.

μž¬ν• λ‹Ή κΈˆμ§€
var λ˜λŠ” let ν‚€μ›Œλ“œλ‘œ μ…˜μ–Έν•œ λ³€μˆ˜λŠ” μž¬ν• λ‹Ήμ΄ μžμœ λ‘œμš°λ‚˜ const ν‚€μ›Œλ“œλ‘œ μ„ μ–Έν•œ λ³€μˆ˜λŠ” μž¬ν• λ‹Ήμ΄ λΆˆκ°€λŠ₯ν•˜λ‹€.
λ³€μˆ˜μ˜ μƒλŒ€ κ°œλ…μΈ μƒμˆ˜λŠ” μž¬ν• λ‹Ήμ΄ κΈˆμ§€λœ λ³€μˆ˜λ₯Ό λ§ν•œλ‹€.
μ΄λ‘œμΈν•΄ const ν‚€μ›Œλ“œλ‘œ μ„ μ–Έν•œ λ³€μˆ˜λ₯Ό μž¬ν• λ‹Ή ν•˜λ €κ³  μ‹œλ„ν•œλ‹€λ©΄ TypeErrorκ°€ λ°œμƒν•œλ‹€.

const ν‚€μ›Œλ“œμ™€ 객체
const ν‚€μ›Œλ“œλ‘œ μ„ μ–Έλœ λ³€μˆ˜μ— μ›μ‹œ 값을 ν• λ‹Ήν•œ 경우 값을 λ³€κ²½ν•  수 μ—†λ‹€. ν•˜μ§€λ§Œ const ν‚€μ›Œλ“œλ‘œ μ„ μ–Έλœ λ³€μˆ˜μ— 객체λ₯Ό ν• λ‹Ήν•œ 경우 값을 λ³€κ²½ν•  수 μžˆλ‹€. λ³€κ²½ λΆˆκ°€λŠ₯ν•œ 값인 μ›μ‹œ 값은 μž¬ν• λ‹Ή 없이 λ³€κ²½(ꡐ체)ν•  수 μžˆλŠ” 방법이 μ—†μ§€λ§Œ λ³€κ²½ κ°€λŠ₯ν•œ 값인 κ°μ²΄λŠ” μž¬ν• λ‹Ή 없이도 직접 변경이 κ°€λŠ₯ν•˜κΈ° λ•Œλ¬Έμ΄λ‹€.

constν‚€μ›Œλ“œλŠ” μž¬ν• λ‹Ήμ„ κΈˆμ§€ν•  뿐 "λΆˆλ³€"을 μ˜λ―Έν•˜μ§€λŠ” μ•ŠλŠ”λ‹€.μƒˆλ‘œμš΄ 값을 μž¬ν• λ‹Ή ν•˜λŠ”κ²ƒμ€ λΆˆκ°€λŠ₯ν•˜μ§€λ§Œ ν”„λ‘œνΌν‹° 동적 생성,μ‚­μ œ,ν”„λ‘œνΌν‹° κ°’μ˜ 변경을 톡해 객체λ₯Ό λ³€κ²½ν•˜λŠ” 것은 κ°€λŠ₯ν•˜λ‹€.μ΄λ•Œ 객체가 λ³€κ²½λ˜λ”λΌλ„ λ³€μˆ˜μ— ν• λ‹Ήλœ μ°Έμ‘° 값은 λ³€κ²½λ˜μ§€ μ•ŠλŠ”λ‹€.

πŸ₯„ μ†Œκ° ν•œμŠ€ν‘Ό..

let은 μž¬μ„ μ–Έμ΄ ν•„μš”ν•œ λ³€μˆ˜μΌ λ•Œλ§Œ.. μΈμ§€ν•˜λ©΄μ„œ μ½”λ”©ν•˜κΈ°.. 
ν”„λ‘œμ νŠΈλ₯Ό 마치고 λ‹€μŒμ£ΌλΆ€ν„° 또 μ•½ ν•œλ‹¬κ°„ ν”„λ‘œμ νŠΈλ₯Ό ν•΄μ•Όν•œλ‹€λŠ” 생각에 .. 
λ²ˆμ•„μ›ƒμ΄ 온 것 κ°™λ‹€.. μ •μ‹ μ°¨λ¦¬μžπŸ˜ 

πŸ‘πŸ»Reference

λͺ¨λ˜ μžλ°”μŠ€ν¬λ¦½νŠΈ - 이웅λͺ¨ μ§€μŒ

profile
β˜„οΈ

0개의 λŒ“κΈ€