devdong

Welcome to devdong β€” a cozy corner where developers share stories over a cup of coffee. β˜•πŸ’»

JavaScript의 얕은 볡사와 κΉŠμ€ 볡사 차이λ₯Ό μ‰½κ²Œ μ •λ¦¬ν–ˆμŠ΅λ‹ˆλ‹€.
JavaScript둜 κ°œλ°œν•˜λ‹€ 보면 객체λ₯Ό 볡사해야 ν•˜λŠ” 상황이 자주 μƒκΉλ‹ˆλ‹€. ν•˜μ§€λ§Œ λ‹¨μˆœνžˆ = μ—°μ‚°μžλ‘œ λ³΅μ‚¬ν•˜λ©΄ μ˜ˆμƒμΉ˜ λͺ»ν•œ 버그가 λ°œμƒν•  수 μžˆμ–΄μš”. μ™œλƒν•˜λ©΄ κ°μ²΄λŠ” μ°Έμ‘° νƒ€μž…μ΄κΈ° λ•Œλ¬Έμ΄μ£ . 이번 κΈ€μ—μ„œλŠ” 얕은 볡사와 κΉŠμ€ λ³΅μ‚¬μ˜ 차이점, 각각의 μ‚¬μš© 사둀, 그리고 μ‹€λ¬΄μ—μ„œ λ°”λ‘œ ν™œμš©ν•  수 μžˆλŠ” κ΅¬ν˜„ 방법을 μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€.
μƒˆλ‘œμš΄ DOM API, setHTML을 μ•Œμ•„λ³΄μž
μ›Ή κ°œλ°œμ„ ν•˜λ‹€ 보면 λ™μ μœΌλ‘œ HTML을 μ‚½μž…ν•΄μ•Ό ν•˜λŠ” κ²½μš°κ°€ λ§ŽμŠ΅λ‹ˆλ‹€. μ΄λ•Œ κ°€μž₯ ν”ν•˜κ²Œ μ‚¬μš©λ˜λŠ” 방법은 innerHTMLμ΄μ§€λ§Œ, 이 방법은 크둜슀 μ‚¬μ΄νŠΈ μŠ€ν¬λ¦½νŒ…(XSS) 곡격에 μ·¨μ•½ν•˜λ‹€λŠ” 큰 단점이 μžˆμŠ΅λ‹ˆλ‹€. κ·Έλž˜μ„œ λ§Žμ€ κ°œλ°œμžλ“€μ΄ DOMPurify와 같은 μ™ΈλΆ€ 라이브러리λ₯Ό μ‚¬μš©ν•΄ HTML을 μ•ˆμ „ν•˜κ²Œ μ‚½μž…ν•΄μ™”μŠ΅λ‹ˆλ‹€. μ΄μ œλŠ” μ›Ή ν‘œμ€€μ— λ‚΄μž₯된 μ•ˆμ „ν•œ λ°©λ²•μœΌλ‘œ HTML을 μ‚½μž…ν•  수 있게 될 μ „λ§μž…λ‹ˆλ‹€. λ°”λ‘œ μƒˆλ‘œμš΄ DOM API인 setHTML()이 λ“±μž₯ν–ˆκΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€. 이 κΈ€μ—μ„œλŠ” setHTML()이 무엇인지, μ™œ ν•„μš”ν•œμ§€, 그리고 μ–΄λ–»κ²Œ μ‚¬μš©ν•˜λŠ”μ§€μ— λŒ€ν•΄ μžμ„Ένžˆ μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€.
μžλ°”μŠ€ν¬λ¦½νŠΈ ν˜•λ³€ν™˜ μ™„λ²½ κ°€μ΄λ“œ
μžλ°”μŠ€ν¬λ¦½νŠΈλ₯Ό 닀루닀 보면 "5" + 1이 "51"이 되고, "5" - 1은 4κ°€ λ˜λŠ” 상황을 λ§ˆμ£Όν•˜κ²Œ λ©λ‹ˆλ‹€. μ²˜μŒμ—λŠ” ν˜Όλž€μŠ€λŸ¬μšΈ 수 μžˆμ§€λ§Œ, μ΄λŠ” μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ ν˜•λ³€ν™˜(Type Conversion) λ©”μ»€λ‹ˆμ¦˜ λ•Œλ¬Έμž…λ‹ˆλ‹€. ν˜•λ³€ν™˜μ€ ν•œ 데이터 νƒ€μž…μ„ λ‹€λ₯Έ νƒ€μž…μœΌλ‘œ λ³€ν™˜ν•˜λŠ” 과정을 λ§ν•©λ‹ˆλ‹€. μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” 동적 νƒ€μž… 언어이기 λ•Œλ¬Έμ—, κ°œλ°œμžκ°€ λͺ…μ‹œμ μœΌλ‘œ νƒ€μž…μ„ μ§€μ •ν•˜μ§€ μ•Šμ•„λ„ λŸ°νƒ€μž„μ—μ„œ μžλ™μœΌλ‘œ νƒ€μž…μ΄ κ²°μ •λ˜κ³  λ³€ν™˜λ©λ‹ˆλ‹€. 이런 νŠΉμ„±μ€ κ°œλ°œμ„ νŽΈλ¦¬ν•˜κ²Œ λ§Œλ“€μ§€λ§Œ, μ˜ˆμƒμΉ˜ λͺ»ν•œ λ²„κ·Έμ˜ 원인이 λ˜κΈ°λ„ ν•©λ‹ˆλ‹€. 이 κΈ€μ—μ„œλŠ” λͺ…μ‹œμ  ν˜•λ³€ν™˜κ³Ό 암묡적 ν˜•λ³€ν™˜μ˜ 차이뢀터 객체의 ν˜•λ³€ν™˜, 그리고 μ‹€λ¬΄μ—μ„œ μ£Όμ˜ν•΄μ•Ό ν•  ν•¨μ •κΉŒμ§€ μžλ°”μŠ€ν¬λ¦½νŠΈ ν˜•λ³€ν™˜μ˜ λͺ¨λ“  것을 λ‹€λ£Ήλ‹ˆλ‹€. 이 κ°€μ΄λ“œλ₯Ό 톡해 ν˜•λ³€ν™˜μ˜ μž‘λ™ 원리λ₯Ό μ •ν™•νžˆ μ΄ν•΄ν•˜κ³ , 더 μ•ˆμ „ν•˜κ³  예츑 κ°€λŠ₯ν•œ μ½”λ“œλ₯Ό μž‘μ„±ν•  수 있게 될 κ±°μ˜ˆμš”.
eval() 없이 μžλ°”μŠ€ν¬λ¦½νŠΈ 계산기 λ§Œλ“€κΈ°
μžλ°”μŠ€ν¬λ¦½νŠΈλ‘œ μ½”λ“œλ₯Ό μž‘μ„±ν•˜λ‹€ 보면 λ™μ μœΌλ‘œ μ½”λ“œλ₯Ό μ‹€ν–‰ν•΄μ•Ό ν•  λ•Œκ°€ μžˆμŠ΅λ‹ˆλ‹€. λ§Žμ€ κ°œλ°œμžκ°€ 이럴 λ•Œ eval() ν•¨μˆ˜λ₯Ό λ– μ˜¬λ¦¬κ³€ ν•©λ‹ˆλ‹€. eval()은 λ¬Έμžμ—΄μ„ μ½”λ“œλ‘œ μΈμ‹ν•˜κ³  μ‹€ν–‰ν•΄μ£ΌλŠ” νŽΈλ¦¬ν•œ κΈ°λŠ₯을 μ œκ³΅ν•˜μ£ . ν•˜μ§€λ§Œ 이 νŽΈλ¦¬ν•¨ λ’€μ—λŠ” μ‹¬κ°ν•œ λ³΄μ•ˆ μœ„ν—˜κ³Ό μ„±λŠ₯ μ €ν•˜ λ¬Έμ œκ°€ μˆ¨μ–΄ μžˆμŠ΅λ‹ˆλ‹€. 이 κΈ€μ—μ„œλŠ” eval()을 μ‚¬μš©ν•˜λŠ” 것이 μ™œ μœ„ν—˜ν•œμ§€ μ•Œμ•„λ³΄κ³ , 더 μ•ˆμ „ν•˜κ³  효율적인 λŒ€μ•ˆμΈ new Function()을 μ‚¬μš©ν•΄ 동적 μ½”λ“œλ₯Ό μ‹€ν–‰ν•˜λŠ” 방법을 μžμ„Ένžˆ μ‚΄νŽ΄λ³΄κ² μŠ΅λ‹ˆλ‹€. 이 글을 톡해 μ—¬λŸ¬λΆ„μ€ 더 μ•ˆμ „ν•˜κ³  κ²¬κ³ ν•œ μ½”λ“œλ₯Ό μž‘μ„±ν•˜λŠ” λŠ₯λ ₯을 κΈ°λ₯Ό 수 μžˆμ„ κ±°μ˜ˆμš”.
JavaScriptμ—μ„œ eval()을 λŒ€μ²΄ν•  수 μžˆλŠ” 방법
JavaScript의 eval()이 μœ„ν—˜ν•œ μ΄μœ μ™€ new Function()으둜 μ•ˆμ „ν•˜κ²Œ λŒ€μ²΄ν•˜λŠ” 방법을 μ‹€μš©μ μΈ μ˜ˆμ œμ™€ ν•¨κ»˜ μ•Œμ•„λ³΄μ„Έμš”. λ³΄μ•ˆκ³Ό μ„±λŠ₯을 λͺ¨λ‘ μž‘λŠ” 팁! JavaScriptλ₯Ό μ‚¬μš©ν•˜λ‹€ 보면 λ¬Έμžμ—΄λ‘œ 된 μ½”λ“œλ₯Ό μ‹€ν–‰ν•΄μ•Ό ν•  λ•Œκ°€ μžˆμŠ΅λ‹ˆλ‹€. 이럴 λ•Œ κ°€μž₯ λ¨Όμ € λ– μ˜€λ₯΄λŠ” 것이 eval() ν•¨μˆ˜μ£ . ν•˜μ§€λ§Œ eval()은 λ³΄μ•ˆ 취약점과 μ„±λŠ₯ 문제둜 μ•…λͺ…이 λ†’μŠ΅λ‹ˆλ‹€. 이 κΈ€μ—μ„œλŠ” eval()의 μœ„ν—˜μ„±μ„ μ‚΄νŽ΄λ³΄κ³ , 더 μ•ˆμ „ν•œ λŒ€μ•ˆμΈ new Function()을 μ–΄λ–»κ²Œ ν™œμš©ν•  수 μžˆλŠ”μ§€ μ‹€μš©μ μΈ μ˜ˆμ œμ™€ ν•¨κ»˜ μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€.
μžλ°”μŠ€ν¬λ¦½νŠΈ μ²΄ν¬λ°•μŠ€ 체크 μ—¬λΆ€ 확인 μ™„λ²½ κ°€μ΄λ“œ
트 λ¦¬μŠ€λ„ˆ, prop(), is() μ‚¬μš©λ²•μ„ μ˜ˆμ œμ™€ ν•¨κ»˜ μ„€λͺ…ν•©λ‹ˆλ‹€. μ›Ή κ°œλ°œμ—μ„œ μ‚¬μš©μžμ™€μ˜ μƒν˜Έμž‘μš©μ€ 맀우 μ€‘μš”ν•©λ‹ˆλ‹€. μ²΄ν¬λ°•μŠ€λŠ” μ‚¬μš©μžμ˜ λ™μ˜λ₯Ό μ–»κ±°λ‚˜, μ—¬λŸ¬ μ˜΅μ…˜ 쀑 ν•˜λ‚˜ λ˜λŠ” λ‹€μˆ˜λ₯Ό μ„ νƒν•˜κ²Œ ν•˜λŠ” λ“± κ°„λ‹¨ν•˜λ©΄μ„œλ„ ν•„μˆ˜μ μΈ μ‚¬μš©μž μΈν„°νŽ˜μ΄μŠ€(UI) μš”μ†Œμž…λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ 'μ΄μš©μ•½κ΄€μ— λ™μ˜ν•©λ‹ˆλ‹€' λ˜λŠ” 'μžλ™ 둜그인'κ³Ό 같은 κΈ°λŠ₯듀은 λͺ¨λ‘ μ²΄ν¬λ°•μŠ€λ₯Ό 톡해 κ΅¬ν˜„λ˜μ£ . μ΄λŸ¬ν•œ μ²΄ν¬λ°•μŠ€μ˜ 선택 μ—¬λΆ€, 즉 'μƒνƒœ'λ₯Ό ν™•μΈν•˜λŠ” 것은 μ‚¬μš©μžμ˜ μž…λ ₯을 μ²˜λ¦¬ν•˜κ³  그에 λ§žλŠ” λ‘œμ§μ„ μ‹€ν–‰ν•˜κΈ° μœ„ν•΄ λ°˜λ“œμ‹œ μ•Œμ•„μ•Ό ν•  κΈ°μˆ μž…λ‹ˆλ‹€. 이 κΈ€μ—μ„œλŠ” μžλ°”μŠ€ν¬λ¦½νŠΈ(JavaScript)와 제이쿼리(jQuery)λ₯Ό μ‚¬μš©ν•˜μ—¬ μ²΄ν¬λ°•μŠ€μ˜ μƒνƒœλ₯Ό ν™•μΈν•˜λŠ” λ‹€μ–‘ν•œ 방법을 쉽고 λͺ…ν™•ν•˜κ²Œ μ•Œλ €λ“œλ¦΄ κ±°μ˜ˆμš”. 이 글을 λκΉŒμ§€ μ½μœΌμ‹œλ©΄, μ—¬λŸ¬λΆ„μ€ μ–΄λ–€ μƒν™©μ—μ„œλ“  μžμ‹  있게 μ²΄ν¬λ°•μŠ€ μƒνƒœλ₯Ό λ‹€λ£° 수 있게 될 κ²λ‹ˆλ‹€.
2025 이제 jQueryλ₯Ό μ‚¬μš©ν•˜λ©΄ μ•ˆ λ˜λŠ” 이유
2006λ…„ μ‘΄ λ ˆμ‹μ΄ "write less, do more"λΌλŠ” λͺ¨ν† μ™€ ν•¨κ»˜ jQueryλ₯Ό 세상에 μ„ λ³΄μ˜€μ„ λ•Œ, μ›Ή κ°œλ°œμ€ μƒˆλ‘œμš΄ μ‹œλŒ€λ₯Ό λ§žμ΄ν–ˆμŠ΅λ‹ˆλ‹€. ν•œλ•Œ κ°€μž₯ 인기 μžˆλŠ” μ›Ήμ‚¬μ΄νŠΈμ˜ 65%κ°€ μ‚¬μš©ν•  μ •λ„λ‘œ jQueryλŠ” μ›Ή 개발의 ν•„μˆ˜ 라이브러리둜 자리 μž‘μ•˜μ£ . λ³΅μž‘ν•œ DOM μ‘°μž‘κ³Ό 이벀트 처리, μ• λ‹ˆλ©”μ΄μ…˜, Ajax μš”μ²­κΉŒμ§€ κ°„κ²°ν•œ μ½”λ“œλ‘œ ν•΄κ²°ν•΄μ£Όμ—ˆκΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€. ν•˜μ§€λ§Œ κΈ°μˆ μ€ λŠμž„μ—†μ΄ λ°œμ „ν•˜κ³ , μ›Ή 개발 ν™˜κ²½λ„ 크게 λ³€ν–ˆμŠ΅λ‹ˆλ‹€. μ΅œμ‹  μžλ°”μŠ€ν¬λ¦½νŠΈ ν‘œμ€€κ³Ό React, Vue 같은 κ°•λ ₯ν•œ ν”„λ ˆμž„μ›Œν¬κ°€ λ“±μž₯ν•˜λ©΄μ„œ jQuery의 μž…μ§€λŠ” μ˜ˆμ „ κ°™μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 이 κΈ€μ—μ„œλŠ” jQueryκ°€ 과거에 μ–΄λ–€ 문제λ₯Ό ν•΄κ²°ν–ˆκ³ , μ™œ μ˜€λŠ˜λ‚  μƒˆλ‘œμš΄ ν”„λ‘œμ νŠΈμ—λŠ” 더 이상 μ΅œμ„ μ˜ 선택이 μ•„λ‹Œμ§€ κ·Έ 이유λ₯Ό μžμ„Ένžˆ μ‚΄νŽ΄λ³΄κ² μŠ΅λ‹ˆλ‹€.
jQuery 이벀트 버블링을 λ°©μ§€ν•˜λŠ” 4κ°€μ§€ 방법
μ›Ή κ°œλ°œμ„ ν•˜λ‹€ 보면 νŠΉμ • μš”μ†Œλ₯Ό ν΄λ¦­ν–ˆλŠ”λ°, μ›ν•˜μ§€ μ•Šμ•˜λ˜ λΆ€λͺ¨ μš”μ†Œμ˜ μ΄λ²€νŠΈκΉŒμ§€ ν•¨κ»˜ μ‹€ν–‰λ˜λŠ” κ²½ν—˜μ„ 해보셨을 κ²λ‹ˆλ‹€. μ΄λŠ” '이벀트 버블링(Event Bubbling)'μ΄λΌλŠ” ν˜„μƒ λ•Œλ¬ΈμΈλ°μš”. 이벀트 버블링은 잘 μ΄ν•΄ν•˜κ³  ν™œμš©ν•˜λ©΄ μœ μš©ν•˜μ§€λ§Œ, λŒ€λΆ€λΆ„μ˜ 경우 μ–˜κΈ°μΉ˜ μ•Šμ€ λ™μž‘μ„ μœ λ°œν•˜μ—¬ μ½”λ“œλ₯Ό λ³΅μž‘ν•˜κ²Œ λ§Œλ“­λ‹ˆλ‹€. 이번 ν¬μŠ€νŠΈμ—μ„œλŠ” jQueryμ—μ„œ 이벀트 버블링이 무엇인지 μ•Œμ•„λ³΄κ³ , 이λ₯Ό 효과적으둜 μ œμ–΄ν•˜λŠ” λ„€ κ°€μ§€ 방법에 λŒ€ν•΄ μ½”λ“œ μ˜ˆμ œμ™€ ν•¨κ»˜ μžμ„Ένžˆ μ„€λͺ…ν•΄ λ“œλ¦¬κ² μŠ΅λ‹ˆλ‹€. 이 글을 톡해 이벀트 μ²˜λ¦¬μ— λŒ€ν•œ 이해λ₯Ό 높이고, 더 κΉ”λ”ν•˜κ³  예츑 κ°€λŠ₯ν•œ μ½”λ“œλ₯Ό μž‘μ„±ν•˜λŠ” 데 도움을 μ–»μœΌμ‹œκΈΈ λ°”λžλ‹ˆλ‹€.
μžλ°”μŠ€ν¬λ¦½νŠΈ ν”„λ‘œν† νƒ€μž… 체이닝 μ™„λ²½ κ°€μ΄λ“œ
μžλ°”μŠ€ν¬λ¦½νŠΈ ν”„λ‘œν† νƒ€μž… μ²΄μ΄λ‹μ˜ 핡심 κ°œλ…λΆ€ν„° μ‹€μ „ ν™œμš©κΉŒμ§€! λ©”λͺ¨λ¦¬ 효율적인 상속 ꡬ쑰와 prototype, proto 차이점을 μ½”λ“œ 예제둜 μ‰½κ²Œ μ„€λͺ…ν•©λ‹ˆλ‹€. μžλ°”μŠ€ν¬λ¦½νŠΈλ₯Ό λ‹€λ£¨λŠ” 개발자라면 λ°˜λ“œμ‹œ 이해해야 ν•  κ°œλ… 쀑 ν•˜λ‚˜κ°€ λ°”λ‘œ ν”„λ‘œν† νƒ€μž… μ²΄μ΄λ‹μž…λ‹ˆλ‹€. 이 λ©”μ»€λ‹ˆμ¦˜μ€ μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ 객체 μ§€ν–₯ ν”„λ‘œκ·Έλž˜λ°μ˜ 핡심이며, μ½”λ“œμ˜ μž¬μ‚¬μš©μ„±κ³Ό λ©”λͺ¨λ¦¬ νš¨μœ¨μ„±μ„ 크게 ν–₯μƒμ‹œν‚¬ 수 μžˆμ–΄μš”. λ§Žμ€ κ°œλ°œμžλ“€μ΄ ES6 클래슀 문법에 μ΅μˆ™ν•΄μ§€λ©΄μ„œ ν”„λ‘œν† νƒ€μž…μ˜ μ€‘μš”μ„±μ„ κ°„κ³Όν•˜λŠ” κ²½μš°κ°€ μžˆμŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ 클래슀 문법도 λ‚΄λΆ€μ μœΌλ‘œλŠ” ν”„λ‘œν† νƒ€μž…μ„ ν™œμš©ν•˜κ³  있기 λ•Œλ¬Έμ—, ν”„λ‘œν† νƒ€μž… 체이닝을 μ œλŒ€λ‘œ μ΄ν•΄ν•˜λ©΄ μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ λ™μž‘ 원리λ₯Ό 더 깊이 있게 νŒŒμ•…ν•  수 μžˆμ–΄μš”. 이 κΈ€μ—μ„œλŠ” ν”„λ‘œν† νƒ€μž… μ²΄μ΄λ‹μ˜ κΈ°λ³Έ κ°œλ…λΆ€ν„° μ‹€μ œ ν™œμš© λ°©λ²•κΉŒμ§€, μ‹€λ¬΄μ—μ„œ λ°”λ‘œ μ μš©ν•  수 μžˆλŠ” λ‚΄μš©λ“€μ„ λ‹€λ€„λ³΄κ² μŠ΅λ‹ˆλ‹€. μ½”λ“œ μ˜ˆμ œμ™€ ν•¨κ»˜ λ‹¨κ³„λ³„λ‘œ μ„€λͺ…λ“œλ¦΄ ν…Œλ‹ˆ, λκΉŒμ§€ λ”°λΌμ˜€μ‹œλ©΄ ν”„λ‘œν† νƒ€μž… 체이닝 λ§ˆμŠ€ν„°κ°€ 될 수 μžˆμ„ κ±°μ˜ˆμš”!
μžλ°”μŠ€ν¬λ¦½νŠΈ λ¬ΌμŒν‘œ(?) 문법 총정리: 3κ°€μ§€ μ‚¬μš©λ²• μ™„μ „ 정볡
μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ λ¬ΌμŒν‘œ(?) μ‚¬μš©λ²•μ„ μ΄μ •λ¦¬ν•©λ‹ˆλ‹€. μ‚Όν•­ μ—°μ‚°μž, μ˜΅μ…”λ„ 체이닝, 널리쉬 μ½œλ ˆμ‹±μ˜ κ°œλ…κ³Ό 싀무 예제λ₯Ό 톡해 μ½”λ“œλ₯Ό κ°„κ²°ν•˜κ³  μ•ˆμ „ν•˜κ²Œ λ§Œλ“œμ„Έμš”. μžλ°”μŠ€ν¬λ¦½νŠΈλ‘œ μ½”λ“œλ₯Ό μ§œλ‹€ 보면 μ—¬κΈ°μ €κΈ°μ„œ λ“±μž₯ν•˜λŠ” λ¬ΌμŒν‘œ(?) λ•Œλ¬Έμ— 고개λ₯Ό κ°Έμ›ƒν•œ κ²½ν—˜, λ‹€λ“€ ν•œ 번쯀 μžˆμœΌμ‹€ κ±°μ˜ˆμš”. ifλ¬Έκ³Ό λΉ„μŠ·ν•΄ 보이기도 ν•˜κ³ , 객체 속성에 λΆ™μ–΄ μžˆκΈ°λ„ ν•˜κ³ , μ—°μ‚°μž 사이에 λœ¬κΈˆμ—†μ΄ λ‚˜νƒ€λ‚˜κΈ°λ„ ν•˜μ£ . 이 λ¬ΌμŒν‘œλ“€μ€ 사싀 μžλ°”μŠ€ν¬λ¦½νŠΈ μ½”λ“œλ₯Ό 훨씬 더 κ°„κ²°ν•˜κ³  μš°μ•„ν•˜κ²Œ λ§Œλ“€μ–΄μ£ΌλŠ” μ•„μ£Ό μœ μš©ν•œ 문법적 μž₯μΉ˜μž…λ‹ˆλ‹€. 특히 μ‹€λ¬΄μ—μ„œλŠ” 반볡적인 μ½”λ“œλ₯Ό 쀄여주고 μ˜ˆμ™Έ 상황을 효과적으둜 μ²˜λ¦¬ν•˜κΈ° μœ„ν•΄ 정말 많이 μ‚¬μš©λΌμš”. 이번 ν¬μŠ€νŠΈμ—μ„œλŠ” μžλ°”μŠ€ν¬λ¦½νŠΈ 개발자라면 λ°˜λ“œμ‹œ μ•Œμ•„μ•Ό ν•  λ¬ΌμŒν‘œ(?)의 μ„Έ κ°€μ§€ μš©λ²•μΈ μ‚Όν•­ μ—°μ‚°μž, μ˜΅μ…”λ„ 체이닝, 그리고 널리쉬 μ½œλ ˆμ‹±μ— λŒ€ν•΄ μžμ„Ένžˆ μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€. 각 문법이 μ™œ ν•„μš”ν•œμ§€, 그리고 μ‹€μ œ μ½”λ“œμ—μ„œ μ–΄λ–»κ²Œ ν™œμš©ν•  수 μžˆλŠ”μ§€ λͺ…ν™•ν•œ μ˜ˆμ‹œμ™€ ν•¨κ»˜ μ„€λͺ…ν•΄ λ“œλ¦΄κ²Œμš”. 이 글을 λκΉŒμ§€ μ½μœΌμ‹œλ©΄ 더 이상 λ¬ΌμŒν‘œλ₯Ό λ‘λ €μ›Œν•˜μ§€ μ•Šκ³  자유자재둜 ν™œμš©ν•˜λŠ” μžμ‹ μ„ λ°œκ²¬ν•˜κ²Œ 될 κ²λ‹ˆλ‹€!
μžλ°”μŠ€ν¬λ¦½νŠΈ λ’€λ‘œκ°€κΈ° 이벀트 κ°μ§€ν•˜λŠ” 방법
μ‚¬μš©μžκ°€ λΈŒλΌμš°μ €μ˜ λ’€λ‘œκ°€κΈ° λ²„νŠΌμ„ λˆŒλ €μ„ λ•Œ 무슨 일이 μΌμ–΄λ‚ κΉŒμš”? λ’€λ‘œκ°€κΈ°λΌλŠ” μ‚¬μš©μž κ²½ν—˜μ„ λ‹¨μˆœνžˆ "νŽ˜μ΄μ§€ 이동"으둜만 μƒκ°ν•©λ‹ˆλ‹€. ν•˜μ§€λ§Œ 쑰금 더 깊이 듀여닀보면, 이 짧은 μˆœκ°„μ— μˆ˜λ§Žμ€ μ‚¬μš©μž κ²½ν—˜ λ¬Έμ œκ°€ μžˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€. μž‘μ„± μ€‘μ΄λ˜ 글이 λ‚ μ•„κ°€κ±°λ‚˜, 결제 과정이 λŠκΈ°κ±°λ‚˜, 심지어 μ€‘μš”ν•œ 데이터가 손싀될 μˆ˜λ„ μžˆμ–΄μš”. 😰 μ˜€λŠ˜μ€ μžλ°”μŠ€ν¬λ¦½νŠΈλ‘œ λ’€λ‘œκ°€κΈ° 이벀트λ₯Ό κ°μ§€ν•˜κ³ , 이λ₯Ό 톡해 μ‚¬μš©μž κ²½ν—˜μ„ μ–΄λ–»κ²Œ κ°œμ„ ν•  수 μžˆλŠ”μ§€ λ‹¨κ³„λ³„λ‘œ 정리해 λ³΄κ² μŠ΅λ‹ˆλ‹€. πŸš€