Hello Kitty Eyes Shut
λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

πŸ’»κ³΅λΆ€ 기둝/πŸ“Œ λ¦¬μ•‘νŠΈ 기초 μŠ€ν„°λ””

[λ¦¬μ•‘νŠΈ 기초 μŠ€ν„°λ””] JavaScript ν˜•λ³€ν™˜

λ°˜μ‘ν˜•

 

 

 

 

 

πŸ”„ JavaScript ν˜•λ³€ν™˜(Type Casting) 정리

μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œλŠ” λ³€μˆ˜λ₯Ό μ‚¬μš©ν•  λ•Œ μžλ£Œν˜•μ΄ μžλ™μœΌλ‘œ λ³€ν™˜λ˜κΈ°λ„ ν•˜κ³ , κ°œλ°œμžκ°€ 직접 λ³€ν™˜ν•˜κΈ°λ„ ν•˜λŠ”λ°,

이λ₯Ό μš°λ¦¬λŠ” ν˜•λ³€ν™˜(Type Casting)이라고 λΆ€λ₯Έλ‹€.

 

 

μ΄λŸ¬ν•œ ν˜•λ³€ν™˜μ€ 크게 μ•„λž˜μ˜ 두 κ°€μ§€λ‘œ λ‚˜λ‰œλ‹€.

  • λ¬΅μ‹œμ  ν˜•λ³€ν™˜ (Implicit Casting) πŸ‘‰πŸ» μžλ°”μŠ€ν¬λ¦½νŠΈ 엔진이 μžλ™μœΌλ‘œ λ³€ν™˜
  • λͺ…μ‹œμ  ν˜•λ³€ν™˜ (Explicit Casting) πŸ‘‰πŸ» κ°œλ°œμžκ°€ 직접 λ³€ν™˜

 

 


🀐 λ¬΅μ‹œμ  ν˜•λ³€ν™˜ (Implicit Casting)

λ¬΅μ‹œμ  ν˜•λ³€ν™˜μ€ κ°œλ°œμžκ°€ λ³„λ„λ‘œ μ§€μ •ν•˜μ§€ μ•Šμ•„λ„ μžλ°”μŠ€ν¬λ¦½νŠΈ 엔진이 μ•Œμ•„μ„œ νƒ€μž…μ„ λ³€ν™˜ν•˜λŠ” κ²½μš°μ΄λ‹€.

let num = 10;
let str = "20";

const result = num + str;
console.log(result); // "1020"

 

μœ„μ˜ μ½”λ“œ μ˜ˆμ‹œμ—μ„œλŠ” 숫자 10이 λ¬Έμžμ—΄ "10"으둜 μžλ™ λ³€ν™˜λ˜μ–΄ "1020"이 좜λ ₯λœλ‹€.

즉, μˆ«μžμ™€ λ¬Έμžμ—΄ μ€‘μ—μ„œ λ¬Έμžμ—΄ μš°μ„  κ·œμΉ™μ΄ 적용된 것이닀.

 

 

❓ ꢁ금증) μ„œλ‘œ λ‹€λ₯Έ νƒ€μž…μ΄ 3개 이상 μ„žμ΄λ©΄ μ–΄λ–»κ²Œ 될까?

이 κΆκΈˆμ¦μ„ ν•΄κ²°ν•˜κΈ° μœ„ν•΄ λ‚˜λŠ” 10 + true + "5"λ₯Ό μ˜ˆμ‹œλ‘œ μ‹€ν–‰ν•΄λ³΄μ•˜κ³ ,

결과둜 "115"κ°€ λ‚˜μ˜€λŠ” 것을 확인할 수 μžˆμ—ˆλ‹€.

 

κ·Έ μ΄μœ λŠ” λ¨Όμ € 10 + trueμ—μ„œ Boolean이 Number둜 λ³€ν™˜λ˜μ–΄ 10 + 1이 μˆ˜ν–‰λ˜μ–΄ 11이 λ‚˜μ˜€κ³ ,

λ‹€μŒμœΌλ‘œ 이 11 + "5"μ—μ„œ Numberκ°€ String으둜 λ³€ν™˜λ˜μ–΄ "11" + "5"κ°€ μˆ˜ν–‰λ˜μ–΄ "115"κ°€ λ‚˜μ˜€κΈ° λ•Œλ¬Έμ΄λ‹€.

 

 

이처럼 μ—¬λŸ¬ νƒ€μž…μ΄ μ„žμ—¬λ„ μžλ°”μŠ€ν¬λ¦½νŠΈ 엔진이 μ •ν•΄μ§„ κ·œμΉ™μ— λ”°λΌμ„œ 순차적으둜 λ¬΅μ‹œμ  λ³€ν™˜μ„ μ§„ν–‰ν•˜κ²Œ λœλ‹€κ³  ν•œλ‹€.

 

 


✍🏻 λͺ…μ‹œμ  ν˜•λ³€ν™˜ (Explicit Casting)

λͺ…μ‹œμ  ν˜•λ³€ν™˜μ€ κ°œλ°œμžκ°€ ν•¨μˆ˜ 등을 μ΄μš©ν•΄μ„œ 직접 μ›ν•˜λŠ” νƒ€μž…μœΌλ‘œ λ³€ν™˜ν•˜λŠ” 방법이닀.

 

 

1) λ¬Έμžμ—΄μ„ 숫자둜

let str1 = "10";
let strToNum = Number(str1);
console.log(10 + strToNum); // 20

 

이처럼 Number( )λŠ” λ¬Έμžμ—΄ 전체가 μˆ«μžμ—¬λ§Œ λ³€ν™˜μ΄ κ°€λŠ₯ν•˜λ‹€κ³  ν•œλ‹€.

 

 

2) parseInt μ‚¬μš©

let str2 = "10개";
let strToNum2 = parseInt(str2);
console.log(strToNum2); // 10

 

이처럼 parseInt( )λŠ” λ¬Έμžμ—΄ μ•žλΆ€λΆ„μ˜ 숫자만 μ½μ–΄μ„œ λ°˜ν™˜ν•œλ‹€κ³  ν•œλ‹€.

 

 

❓ ꢁ금증) "숫자10"도 parseInt( )둜 λ°”κΏ€ 수 μžˆμ„κ°€?

κ²°λ‘ λΆ€ν„° λ§ν•˜λ©΄ μ•ˆλ˜λŠ”λ°,

κ·Έ μ΄μœ λŠ” parseInt( )λŠ” λ°˜λ“œμ‹œ μˆ«μžκ°€ κ°€μž₯ μ•žμͺ½μ— μœ„μΉ˜ν•΄μ•Όλ§Œ λ™μž‘μ΄ κ°€λŠ₯ν•˜κΈ° λ•Œλ¬Έμ΄λΌκ³  ν•œλ‹€.

console.log(parseInt("숫자10")); // NaN

 

 

3) 숫자λ₯Ό λ¬Έμžμ—΄λ‘œ

let num1 = 20;
let numToStr1 = String(num1);
console.log(numToStr1 + "μž…λ‹ˆλ‹€."); // "20μž…λ‹ˆλ‹€."

 

이처럼 String( )을 μ“°λ©΄ μˆ«μžκ°€ λ¬Έμžμ—΄λ‘œ λ³€ν™˜λœλ‹€κ³  ν•œλ‹€.

 

 


πŸ“š κ²°λ‘ 

μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œ νƒ€μž… μΊμŠ€νŒ…μ€ κΌ­ μ΄ν•΄ν•˜κ³  λ„˜μ–΄κ°€μ•Ό ν•˜λŠ” 핡심 κ°œλ…μ΄λ‹€.

 

μ˜ˆμ „μ— Cμ–Έμ–΄λ₯Ό 배울 λ•Œλ„ μ ‘ν–ˆλ˜ λ‚΄μš©μ΄μ§€λ§Œ,

μ–΄λŠ μˆœκ°„λΆ€ν„° κ·Έλƒ₯ λ‹Ήμ—°ν•˜κ²Œ 여겨 λŒ€μˆ˜λ‘­μ§€ μ•Šκ²Œ λ„˜κ²Όλ˜ 것 κ°™λ‹€.

ν•˜μ§€λ§Œ μ΄λ²ˆμ— μžλ°”μŠ€ν¬λ¦½νŠΈλ₯Ό κΈ°μ΄ˆλΆ€ν„° λ‹€μ‹œ κ³΅λΆ€ν•˜λ©° νƒ€μž…μΊμŠ€νŒ…μ„ λ‹€μ‹œ μ •λ¦¬ν•΄λ³΄λ‹ˆ, κ·Έ μ€‘μš”μ„±μ„ μƒˆμ‚Ό λŠλ‚„ 수 μžˆμ—ˆλ‹€.

 

특히, λ¬΅μ‹œμ  ν˜•λ³€ν™˜μ€ νŽΈλ¦¬ν•˜μ§€λ§Œ μ˜λ„μΉ˜ μ•Šμ€ κ²°κ³Όλ₯Ό μ΄ˆλž˜ν•  수 있기 λ•Œλ¬Έμ—

μ•žμœΌλ‘œλŠ” λͺ…μ‹œμ  ν˜•λ³€ν™˜μ„ μŠ΅κ΄€μ μœΌλ‘œ ν™œμš©ν•˜λŠ” λ°©ν–₯으둜 μ½”λ“œλ₯Ό μž‘μ„±ν•˜λ„λ‘ λ‹€μ‹œκΈˆ 머리에 μƒˆκ²¨μ•Όκ² λ‹€.

λ°˜μ‘ν˜•