πŸ”₯ ν˜Έμ΄μŠ€νŒ… [JS]

hoheesuΒ·2024λ…„ 2μ›” 8일

JavaScript

λͺ©λ‘ 보기
5/8
post-thumbnail

JavaScript ν˜Έμ΄μŠ€νŒ…μ€ 인터프리터가 μ½”λ“œλ₯Ό μ‹€ν–‰ν•˜κΈ° μ „ ν•¨μˆ˜, λ³€μˆ˜, 클래슀 λ˜λŠ” import의 선언문을 ν•΄λ‹Ή λ²”μœ„μ˜ 맨 μœ„λ‘œ λŒμ–΄μ˜¬λ¦¬λŠ” κ²ƒμ²˜λŸΌ λ³΄μ΄λŠ” κ°€μƒν˜„μƒμ„ λœ»ν•œλ‹€.

βœ… λ³€μˆ˜κ°€ μ„ μ–Έλœ 쀄 이전에 ν•΄λ‹Ή λ²”μœ„μ—μ„œ λ³€μˆ˜ 값을 μ‚¬μš©ν•  수 μžˆλŠ” 경우 ("κ°’ ν˜Έμ΄μŠ€νŒ…")
βœ… λ³€μˆ˜κ°€ μ„ μ–Έλœ 쀄 이전에 ν•΄λ‹Ήλ²”μœ„μ˜ λ³€μˆ˜λ₯Ό μ°Έμ‘°ν•  수 μžˆμ§€λ§Œ ReferenceError을 λ˜μ§€μ§€ μ•Šκ³  값이 항상 undefined인 경우("μ„ μ–Έ ν˜Έμ΄μŠ€νŒ…")
βœ… λ³€μˆ˜λ₯Ό μ„ μ–Έν•˜λ©΄ λ³€μˆ˜κ°€ μ„ μ–Έλœ 쀄 μ•žμ˜ λ²”μœ„μ—μ„œ λ™μž‘μ΄ λ³€κ²½λœλ‹€.
βœ… μ„ μ–Έμ˜ λΆ€μž‘μš©μ€ 선언이 ν¬ν•¨λœ λ‚˜λ¨Έμ§€ μ½”λ“œ ν‰κ°€ν•˜κΈ° 전에 λ°œμƒν•œλ‹€.

ν•¨μˆ˜ ν˜Έμ΄μŠ€νŒ…μ˜ νŠΉμ§•μ„ 잘 ν™œμš©μ„ ν•˜λ €λ©΄ ν•¨μˆ˜ μ„ μ–Έλ¬Έ κ³Ό ν•¨μˆ˜ ν‘œν˜„μ‹μ„ 이해λ₯Ό ν•΄μ•Όν•œλ‹€.

// ν•¨μˆ˜ μ„ μ–Έλ¬Έ
function a () { /* ... */ }
// ν•¨μˆ˜ 선언식
const b = function () { /* ... */}

μ—¬κΈ°μ„œ ν•¨μˆ˜ 선언문은 ν˜Έμ΄μŠ€νŒ…μ΄ μ μš©λ˜μ–΄ ν•¨μˆ˜ 선언문보닀 ν•¨μˆ˜ ν˜ΈμΆœμ„ λ¨Όμ € μž‘μ„±ν•˜μ—¬λ„ 잘 μž‘λ™μ΄ λœλ‹€. ν•˜μ§€λ§Œ ν•¨μˆ˜ ν‘œν˜„μ‹μ€ ν˜Έμ΄μŠ€νŒ…μ΄ μ μš©λ˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ— ν•¨μˆ˜ ν‘œν˜„μ‹μ„ μž‘μ„±ν•˜κΈ° 전에 ν˜ΈμΆœμ„ ν•˜κ²Œ 되면 μ½”λ“œκ°€ μž‘λ™ν•˜μ§€ μ•ŠλŠ”λ‹€.
μ΄λ ‡κ²Œλ§Œ 보면 ν•¨μˆ˜ 선언문이 μ½”λ“œ μ •λ¦¬ν•˜κΈ°μ— 훨씬 νŽΈν•΄λ³΄μΌ μˆ˜λ„ μžˆμ§€λ§Œ 큰 단점이 μ‘΄μž¬ν•œλ‹€.

ν˜‘μ—…μ„ν†΅ν•΄ 규λͺ¨κ°€ 큰 ν”„λ‘œμ νŠΈλ₯Ό μ§„ν–‰ν• λ•Œ ν•¨μˆ˜ μ„ μ–Έλ¬ΈμœΌλ‘œ μ„œλ‘œ λ‹€λ₯Έ μ‚¬λžŒμ΄ 같은 μ΄λ¦„μ˜ ν•¨μˆ˜λ₯Ό μ„ μ–Έν–ˆλ‹€κ³  κ°€μ •ν•΄λ³΄μž ( λ‚΄λΆ€ 싀행은 λ‹€λ₯Έ μ½”λ“œ ) 이런 경우 ν•¨μˆ˜ μ„ μ–Έλ¬ΈμœΌλ‘œ μ„ μ–Έλœ ν•¨μˆ˜λŠ” ν˜Έμ΄μŠ€νŒ…μ΄ μ μš©λ˜μ–΄ 전역에 μ‹€ν–‰λ˜κΈ° λ•Œλ¬Έμ— λ¬Έμ œκ°€ 생길 수 μžˆλ‹€.
κ·Έλ ‡κΈ° λ•Œλ¬Έμ— ν•¨μˆ˜ μ„ μ–Έλ¬Έκ³Ό ν•¨μˆ˜ μ„ μ–Έλ¬Έμ˜ νŠΉμ§•μ„ 잘 μ΄ν•΄ν•˜κ³  μ‚¬μš©μ„ ν•˜λŠ” 것이 μ’‹λ‹€κ³  ν•  수 μžˆλ‹€.

profile
πŸ€”πŸ‘πŸ’‘πŸ‘¨πŸ»β€πŸ’»πŸ€―πŸ˜‡

0개의 λŒ“κΈ€