λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

λ…μ„œ λͺ©λ‘/λͺ¨λ”₯λ‹€ Modern JS Deep Dive

[λͺ¨λ”₯λ‹€] 15μž₯ let, const ν‚€μ›Œλ“œμ™€ 블둝 레벨 μŠ€μ½”ν”„

728x90

15.1 var ν‚€μ›Œλ“œλ‘œ μ„ μ–Έν•œ λ³€μˆ˜μ˜ 문제점

15.1.1 λ³€μˆ˜ 쀑볡 μ„ μ–Έ ν—ˆμš© 

λ™μΌν•œ μ΄λ¦„μ˜ λ³€μˆ˜ 선언이 κ°€λŠ₯함.

 

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

μ˜€λ‘œμ§€ ν•¨μˆ˜μ˜ μ½”λ“œ λΈ”λ‘λ§Œμ„ 지역 μŠ€μ½”ν”„λ‘œ 정함. 

-> μ™ΈλΆ€μ—μ„œ var ν‚€μ›Œλ“œλ‘œ μ„ μ–Έν•œ λ³€μˆ˜ : λͺ¨λ‘ μ „μ—­ λ³€μˆ˜κ°€ 됨.

 

15.1.3 λ³€μˆ˜ ν˜Έμ΄μŠ€νŒ…

λ³€μˆ˜ ν˜Έμ΄μŠ€νŒ…μ— μ˜ν•΄ vay ν‚€μ›Œλ“œλ‘œ μ„ μ–Έν•œ λ³€μˆ˜λŠ” 

λ³€μˆ˜ μ„ μ–Έλ¬Έ 이전에 μ°Έμ‘°ν•  수 μžˆλ‹€.

 

 

15.2 let ν‚€μ›Œλ“œ

15.2.1 λ³€μˆ˜ 쀑볡 μ„ μ–Έ κΈˆμ§€

μ€‘λ³΅μœΌλ‘œ μ„ μ–Έ μ•ˆλ¨.

 

15.2.2 블둝 레벨 μŠ€μ½”ν”„

λͺ¨λ“  μ½”λ“œ 블둝을 지역 μŠ€μ½”ν”„λ‘œ μΈμ •ν•˜λŠ” 블둝 레벨 μŠ€μ½”ν”„λ₯Ό λ”°λ₯Έλ‹€.

 

15.2.3 λ³€μˆ˜ ν˜Έμ΄μŠ€νŒ…

λ³€μˆ˜ ν˜Έμ΄μŠ€νŒ…μ΄ λ°œμƒν•˜μ§€ μ•ŠλŠ” κ²ƒμ²˜λŸΌ λ™μž‘ν•œλ‹€.

μ„ μ–Έλ¬Έ 이전에 μ°Έμ‘°ν•˜λ©΄, ReferenceError λ°œμƒν•¨.

let 으둜 μ„ μ–Έν•œ λ³€μˆ˜λŠ” 'μ„ μ–Έ 단계' 와 'μ΄ˆκΈ°ν™” 단계'κ°€ λΆ„λ¦¬λ˜μ–΄ 진행됨. 

=> 즉, 선언단계가 λ¨Όμ € μ‹€ν–‰λ˜μ§€λ§Œ, μ΄ˆκΈ°ν™” λ‹¨κ³„λŠ” λ³€μˆ˜ 선언문에 λ„λ‹¬ν–ˆμ„ λ•Œ 싀행됨.

μΌμ‹œμ  μ‚¬κ°μ§€λŒ€ :: μŠ€μ½”ν”„ μ‹œμž‘ μ‹œμ  ~ μ΄ˆκΈ°ν™” μ‹œμ  :: λ³€μˆ˜λ₯Ό μ°Έμ‘° ν•  수 μ—†λŠ” ꡬ간

 

15.2.4 μ „μ—­ 객체와 let

var ν‚€μ›Œλ“œλ‘œ μ„ μ–Έν•œ μ „μ—­ λ³€μˆ˜,

μ „μ—­ ν•¨μˆ˜,

그리고 μ„ μ–Έν•˜μ§€ μ•Šμ€ λ³€μˆ˜μ— 값을 ν• λ‹Ήν•œ 암묡적 μ „μ—­

=> 3κ°€μ§€λŠ” μ „μ—­ 객체 window 의 ν”„λ‘œνΌν‹°κ°€ 됨. 

μ „μ—­ 객체의 ν”„λ‘œνΌν‹°λ₯Ό μ°Έμ‘°ν•  λ•Œ window λ₯Ό μƒλž΅ν•  수 있음.

 

ν•˜μ§€λ§Œ let으둜 μ„ μ–Έν•œ μ „μ—­ λ³€μˆ˜λŠ” μ „μ—­ 객체의 ν”„λ‘œνΌν‹°κ°€ μ•„λ‹˜. 

 

 

15.3 const ν‚€μ›Œλ“œ

μƒμˆ˜λ₯Ό μ„ μ–Έν•˜κΈ° μœ„ν•΄ μ‚¬μš©. 

let ν‚€μ›Œλ“œμ™€ λŒ€λΆ€λΆ„ λΉ„μŠ·ν•˜κ³ , λ‹€λ₯Έ 점 μœ„μ£Όλ‘œ μ•„λž˜ μ„œμˆ 

 

15.3.1 μ„ μ–Έκ³Ό μ΄ˆκΈ°ν™”

const ν‚€μ›Œλ“œλ‘œ μ„ μ–Έν•œ λ³€μˆ˜λŠ” λ°˜λ“œμ‹œ μ„ μ–Έκ³Ό λ™μ‹œμ— μ΄ˆκΈ°ν™” ν•΄μ•Όν•œλ‹€.

let κ³Ό 같이 λΈ”λ‘λ ˆλ²¨ μŠ€μ½”ν”„λ₯Ό 가짐. 

 

15.3.2 μž¬ν• λ‹Ή κΈˆμ§€

var, let λ³€μˆ˜λŠ” μž¬ν• λ‹Ή μžμœ λ‘œμ›€

const λŠ” μž¬ν• λ‹Ή κΈˆμ§€

 

15.3.3 μƒμˆ˜

μ›μ‹œκ°’μ„ ν• λ‹Ήν•œ 경우 -> λ³€μˆ˜ 값을 λ³€κ²½ν•  수 μ—†μŒ.

μƒμˆ˜: μž¬ν• λ‹Ήμ΄ κΈˆμ§€λœ λ³€μˆ˜λ₯Ό 의미. 

 

15.3.4 const ν‚€μ›Œλ“œμ™€ 객체

const ν‚€μ›Œλ“œλ‘œ μ„ μ–Έλœ λ³€μˆ˜μ— 객체λ₯Ό ν• λ‹Ήν•œ 경우, 값을 λ³€κ²½ν•  수 μžˆλ‹€.

κ°μ²΄λŠ” μž¬ν• λ‹Ή 없이도 λ‚΄μš© 변경이 κ°€λŠ₯ν•˜κΈ° λ•Œλ¬Έ.

const ν‚€μ›Œλ“œλŠ” μž¬ν• λ‹Ήμ„ κΈˆμ§€ν•  뿐, 'λΆˆλ³€'을 μ˜λ―Έν•˜μ§„ μ•ŠλŠ”λ‹€.

=> μƒˆλ‘œμš΄ 값을 μž¬ν• λ‹Ή ν•˜λŠ” 것이 λΆˆκ°€λŠ₯ν•˜μ§€λ§Œ, 

ν”„λ‘œνΌν‹°μ˜ 동적 생성, μ‚­μ œ, ν”„λ‘œνΌν‹° κ°’μ˜ 변경을 톡해 객체λ₯Ό λ³€κ²½ν•˜λŠ” 것은 κ°€λŠ₯.

 

 

15.4 var vs let vs const

- ES6 μ‚¬μš© μ‹œ var ν‚€μ›Œλ“œ μ‚¬μš©ν•˜μ§€ μ•ŠκΈ°.

- μž¬ν• λ‹Ήμ΄ ν•„μš”ν•œ 경우 ν•œμ • let μ‚¬μš©. 이 λ•Œ λ³€μˆ˜μ˜ μŠ€μ½”ν”„λŠ” μ΅œλŒ€ν•œ 쒁게

- λ³€κ²½ λ°œμƒ μ•ˆν•˜λŠ” μ›μ‹œκ°’, κ°μ²΄λŠ” const ν‚€μ›Œλ“œ μ‚¬μš©. μ•ˆμ „ν•¨. 

- const μ‚¬μš©ν•˜λ‹€κ°€ ν•„μš”μ‹œ let으둜 λ°”κΎΈλ©΄ λœλ‹€.

 

728x90
λ°˜μ‘ν˜•