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

πŸ“š/γ„΄ JavaScript

(13)
[JavaScript] μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” '이벀트 기반', 'λ…ΌλΈ”λ‘œν‚Ή' 방식을 μ‚¬μš©ν•˜κ³  'μ‹±κΈ€ μŠ€λ ˆλ“œ' 언어이닀. μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” μ‹±κΈ€ μŠ€λ ˆλ“œ 언어이닀. ν•˜μ§€λ§Œ μ‹€μ œ μ‚¬μš©μ‹œμ—λŠ” λ§Žμ€ μž‘μ—…μ΄ λ™μ‹œμ— μ²˜λ¦¬λ˜λŠ” λ©€ν‹° μŠ€λ ˆλ“œμ²˜λŸΌ λ³΄μ΄λŠ”λ° μ™œ 그런 κ²ƒμΌκΉŒ? μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” μ–΄λ–»κ²Œ 'λ™μ‹œμ„±(Concurrency)'을 μ§€μ›ν•˜λŠ” κ²ƒμΌκΉŒ? λ°”λ‘œ μ—¬κΈ°μ„œ λ“±μž₯ν•˜λŠ” κ°œλ…μ΄ 이벀트 루프이닀. πŸ”— 이벀트 기반(event-driven)μ΄λž€? 이벀트 κΈ°λ°˜μ΄λž€ μ΄λ²€νŠΈκ°€ λ°œμƒν•  λ•Œ 미리 지정해둔 μž‘μ—…μ„ μˆ˜ν–‰ν•˜λŠ” 방식을 μ˜λ―Έν•œλ‹€. β–ͺ 이벀트 루프 이벀트 λ°œμƒ μ‹œ ν˜ΈμΆœν•  콜백 ν•¨μˆ˜λ“€μ„ κ΄€λ¦¬ν•˜κ³ , 호좜된 콜백 ν•¨μˆ˜μ˜ μ‹€ν–‰ μˆœμ„œλ₯Ό κ²°μ •ν•œλ‹€. λͺ¨λ“  μ΄λ²€νŠΈκ°€ μ’…λ£Œλ  λ•Œ κΉŒμ§€ 이벀트 처리λ₯Ό μœ„ν•œ μž‘μ—…μ„ λ°˜λ³΅ν•˜λ―€λ‘œ 루프라고 λΆˆλ¦°λ‹€. 콜 μŠ€νƒμ—μ„œ μ‹€ν–‰ 쀑인 것이 μžˆλŠ”μ§€ ν™•μΈν•˜κ³ , 콜백 큐에 μž‘μ—…μ΄ μžˆλŠ”μ§€ ν™•μΈν•΄μ„œ 콜 μŠ€νƒμ΄ λΉ„μ—ˆλ‹€λ©΄ 콜백 큐 λ‚΄μ˜ μž‘μ—…μ„ 콜 μŠ€νƒμœΌλ‘œ ..
[JavaScript] 가비지컬렉터(Garbage Collector)λž€? / μ—­ν• , λ™μž‘ 원리 πŸ”— 가비지컬렉터(Garbage Collector)λž€? μ—¬κΈ°μ„œ κ°€λΉ„μ§€λž€ 'μ •λ¦¬λ˜μ§€ μ•Šμ€ λ©”λͺ¨λ¦¬', 'μœ νš¨ν•˜μ§€ μ•Šμ€ λ©”λͺ¨λ¦¬ μ£Όμ†Œ'λ₯Ό λ§ν•œλ‹€. 가비지 μ»¬λ ‰ν„°λŠ” μ΄λŸ¬ν•œ ν•„μš”μ—†λŠ” 정보듀, 가비지듀을 μ“Έμ–΄ λ‹΄μ•„ λ²„λ¦ΌμœΌλ‘œμ¨ λ©”λͺ¨λ¦¬λ₯Ό 관리해쀀닀. πŸ”— 가비지컬렉터 λ™μž‘ 원리 μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œ λ³€μˆ˜λŠ” μ§μ ‘μ μœΌλ‘œ μ°Έμ‘° κ°’(λ¬Έμžμ—΄, 객체, λ°°μ—΄)을 λ‹΄κ³  μžˆμ§€ μ•Šκ³ , ν•΄λ‹Ή 값은 λ©”λͺ¨λ¦¬ 상에 μ €μž₯λœλ‹€. κ·Έλž˜μ„œ μ°Έμ‘° 값을 μƒμ„±ν•˜κ³  λ‚˜μ„œ 더이상 μ°Έμ‘°ν•  것이 μ—†κ±°λ‚˜ λΉ„μ–΄μ‘Œμ„ λ•Œ 가비지 컬렉터가 λ™μž‘ν•˜μ—¬ λ©”λͺ¨λ¦¬κ°€ λ°˜ν™˜λœλ‹€. (λ©”λͺ¨λ¦¬λ₯Ό λ‹€μ‹œ μž¬μ‚¬μš© ν•  수 μžˆλŠ” μƒνƒœκ°€ λœλ‹€.) πŸ”Ž μ°Έκ³  자료 가비지 컬렉터가 λ­ν•˜λŠ” κ±΄κ°€μš”? ν”„λ‘ νŠΈμ—”λ“œ 개발자 λ©΄μ ‘ 질문 정리 πŸ’‘ 같이 보면 쒋을 Post [JavaScript] μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” '이벀트 기반', ..
[JavaScript] λ©”λͺ¨λΌμ΄μ œμ΄μ…˜(Memoization)μ΄λž€? πŸ”— λ©”λͺ¨λΌμ΄μ œμ΄μ…˜(Memoization)μ΄λž€? 컴퓨터 ν”„λ‘œκ·Έλž¨μ΄ λ™μΌν•œ 계산을 λ°˜λ³΅ν•΄μ•Ό ν•  λ•Œ, 이전에 κ³„μ‚°ν•œ 값을 λ©”λͺ¨λ¦¬μ— μ €μž₯ν•˜μ—¬ 그것을 ν™œμš©ν•¨μœΌλ‘œμ¨ 반볡 μˆ˜ν–‰μ„ μ œκ±°ν•œλ‹€. ν”„λ‘œκ·Έλž¨ μ‹€ν–‰ 속도가 빨라진닀. πŸ”Ž μ°Έκ³  자료 μžλ°”μŠ€ν¬λ¦½νŠΈ λ©”λͺ¨λΌμ΄μ œμ΄μ…˜ 예제보기 πŸ’‘ 같이 보면 쒋을 Post [JavaScript] μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” '이벀트 기반', 'λ…ΌλΈ”λ‘œν‚Ή' 방식을 μ‚¬μš©ν•˜κ³  'μ‹±κΈ€ μŠ€λ ˆλ“œ' 언어이닀. μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” μ‹±κΈ€ μŠ€λ ˆλ“œ 언어이닀. ν•˜μ§€λ§Œ μ‹€μ œ μ‚¬μš©μ‹œμ—λŠ” λ§Žμ€ μž‘μ—…μ΄ λ™μ‹œμ— μ²˜λ¦¬λ˜λŠ” λ©€ν‹° μŠ€λ ˆλ“œμ²˜λŸΌ λ³΄μ΄λŠ”λ° μ™œ 그런 κ²ƒμΌκΉŒ? μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” μ–΄λ–»κ²Œ 'λ™μ‹œμ„±(Concurrency)'을 μ§€μ›ν•˜ devjindev.tistory.com
[JavaScript] λ©”μ†Œλ“œ 체이닝(Method Chaining)μ΄λž€? πŸ”— λ©”μ†Œλ“œ 체이닝(Method Chaining)μ΄λž€? μ—¬λŸ¬ λ©”μ†Œλ“œλ₯Ό μ΄μ–΄μ„œ ν˜ΈμΆœν•˜λŠ” 문법이닀. λ©”μ†Œλ“œκ°€ 객체(this)λ₯Ό λ°˜ν™˜ν•˜μ—¬ μ—¬λŸ¬ λ©”μ†Œλ“œλ₯Ό 순차적으둜 μ„ μ–Έν•  수 μžˆλ„λ‘ ν•œλ‹€. πŸ”— μž₯단점 μž₯점 μ½”λ“œκ°€ κ°„κ²°ν•΄μ Έ ν•˜λ‚˜μ˜ λ¬Έμž₯처럼 읽힐 수 μžˆλ‹€. μž₯기적으둜 μœ μ§€λ³΄μˆ˜μ— 도움이 λœλ‹€. 단점 ν•˜λ‚˜μ˜ λΌμΈμ—μ„œ λ„ˆλ¬΄ λ§Žμ€ 일이 μΌμ–΄λ‚˜ 디버깅에 어렀움이 μžˆμ„ 수 μžˆλ‹€. 였λ₯˜κ°€ 났을 λ•Œ μ–΄λŠ λΆ€λΆ„μ˜ λ©”μ†Œλ“œμ—μ„œ 였λ₯˜κ°€ λ‚¬λŠ”μ§€ ν™•μΈν•˜κΈ° μ–΄λ ΅λ‹€. πŸ”Ž μ°Έκ³  자료 λ©”μ†Œλ“œ 체이닝 πŸ’‘ 같이 보면 쒋을 Post [JavaScript] μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” '이벀트 기반', 'λ…ΌλΈ”λ‘œν‚Ή' 방식을 μ‚¬μš©ν•˜κ³  'μ‹±κΈ€ μŠ€λ ˆλ“œ' 언어이닀. μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” μ‹±κΈ€ μŠ€λ ˆλ“œ 언어이닀. ν•˜μ§€λ§Œ μ‹€μ œ μ‚¬μš©μ‹œμ—λŠ” λ§Žμ€ μž‘μ—…μ΄ λ™μ‹œμ— μ²˜λ¦¬λ˜λŠ” λ©€ν‹° μŠ€λ ˆλ“œμ²˜λŸΌ λ³΄μ΄λŠ”λ°..
[JavaScript] 이벀트 버블링, 캑처링, μœ„μž„μ΄λž€? πŸ”— 이벀트 버블링(Event Bubbling)μ΄λž€? νŠΉμ • ν™”λ©΄ μš”μ†Œμ—μ„œ μ΄λ²€νŠΈκ°€ λ°œμƒν–ˆμ„ λ•Œ ν•΄λ‹Ή μ΄λ²€νŠΈκ°€ 더 μƒμœ„μ˜ ν™”λ©΄ μš”μ†Œλ“€λ‘œ μ „λ‹¬λ˜μ–΄ κ°€λŠ” νŠΉμ„±μ΄λ‹€. πŸ”— 이벀트 캑처링(Event Capturing)μ΄λž€? 이벀트 버블링과 λ°˜λŒ€ λ°©ν–₯으둜 μ§„ν–‰λ˜λŠ” 이벀트 μ „νŒŒ 방식이닀. πŸ”— 이벀트 μœ„μž„(Event Delegation)μ΄λž€? ν•˜μœ„ μš”μ†Œμ— 각각 이벀트λ₯Ό 뢙이지 μ•Šκ³  μƒμœ„ μš”μ†Œμ—μ„œ ν•˜μœ„ μš”μ†Œμ˜ 이벀트λ₯Ό μ œμ–΄ν•˜λŠ” 방식이닀. (μ•žμ—μ„œ μ‚΄νŽ΄λ³Έ 이벀트 버블링과 μΊ‘μ²˜λ§μ€ 이벀트 μœ„μž„μ„ μœ„ν•œ μ„ μˆ˜ 지식이라고 해도 과언이 μ•„λ‹ˆλ‹€. 이벀트 μœ„μž„μ€ μ‹€μ œ 바닐라 μžλ°”μŠ€ν¬λ¦½νŠΈλ‘œ μ›Ήκ³Ό 앱을 κ΅¬ν˜„ν•  λ•Œ 자주 μ‚¬μš©ν•˜λŠ” μ½”λ”© νŒ¨ν„΄μ΄λ‹€.) μž₯점 μ½”λ“œκ°€ 짧아지고 λ©”λͺ¨λ¦¬κ°€ μ ˆμ•½λœλ‹€. λ¬΄λΆ„λ³„ν•œ 이벀트 λ“±λ‘μœΌλ‘œ μΈν•œ λ©”λͺ¨λ¦¬ λˆ„μˆ˜λ₯Ό 방지할 수 ..