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

JS 동적 νƒ€μž… vs 정적 νƒ€μž…

μ‹œνλ¦¬ν‹°μ§€ν˜Έ 2023. 11. 26.

JavaScriptλŠ” 값이 ν• λ‹Ήλ˜λŠ” κ³Όμ •μ—μ„œ νƒ€μž…μ΄ κ²°μ •λ˜κΈ° λ•Œλ¬Έμ— 동적 νƒ€μž…(Dynamic, Weak) 언어라고 ν•˜λ©°,

이λ₯Ό νƒ€μž…μ΄ μΆ”λ‘  λœλ‹€κ³  ν‘œν˜„ν•˜κΈ°λ„ ν•œλ‹€.

 

let a; // a의 νƒ€μž…μ€ 아직 μ •μ˜λ˜μ§€ μ•Šμ•˜λ‹€λŠ” 의미의 undefined

a = 5; // a의 νƒ€μž…μ€ Number νƒ€μž…μœΌλ‘œ 결정됨

λ˜ν•œ 이후 좔가적인 μ½”λ“œκ°€ μ‹€ν–‰λ˜λ©΄μ„œ μ–Έμ œλ“ μ§€ λ‹€λ₯Έ νƒ€μž…μœΌλ‘œ 변경될 μˆ˜λ„ 있음

let a = 5; // Number type
// ... λ‹€λ₯Έ μ½”λ“œ μˆ˜ν–‰
a = 'λ¬Έμžμ—΄'; // String type

λ°˜λŒ€λ‘œ C, Java μ–Έμ–΄ λ“±μ˜ κ²½μš°μ—λŠ” μ„ μ–Έ μ‹œμ μ— νƒ€μž…μ΄ κ²°μ •λ˜κΈ° λ•Œλ¬Έμ— μ •적 νƒ€μž…(Static, Strong) μ–Έμ–΄λΌκ³  함

int a = 5; // λ³€μˆ˜ a의 νƒ€μž…μ€ int

a = "λ¬Έμžμ—΄"; // 컴파일 μ—λŸ¬ λ°œμƒ

 

 

* 동적 νƒ€μž… μ–Έμ–΄μ˜ μž₯점은 μ½”λ“œ μž‘μ„±μ— μœ μ—°ν•˜μ§€λ§Œ 신뒰성이 λ–¨μ–΄μ§„λ‹€.

* 정적 νƒ€μž… μ–Έμ–΄μ˜ μž₯점은 μ½”λ“œ μž‘μ„±μ— μ œμ•½μ΄ λ§Žμ§€λ§Œ 신뒰성이 λ†’λ‹€.

λŒ“κΈ€