notes
40장. 이벤트
모던 JS Deep Dive — 이벤트 전파·핸들러·이벤트 위임 핵심 정리.
참고: 이웅모 《모던 자바스크립트 Deep Dive》 40장 · [MDN Events](https://developer.mozilla.org/en-US/docs/Web/API/Event)
브라우저는 사건을 감지하고 리스너를 부른다. 캡처→타깃→버블. 위임이 실무 기본기.
btn.addEventListener('click', (e) => {
console.log(e.target, e.currentTarget);
e.preventDefault();
});
등록
어트리뷰트 / on-프로퍼티 / addEventListener(권장, 여러 개·옵션).
이벤트 객체
type, target, currentTarget, preventDefault, stopPropagation.
전파
캡처→타깃→버블. addEventListener(..., true) 캡처.
위임
부모 하나에 리스너, event.target으로 자식 구분.
list.addEventListener('click', (e) => {
const li = e.target.closest('li');
if (!li || !list.contains(li)) return;
console.log(li.dataset.id);
});
this
리스너 안 this는 보통 currentTarget(비화살표). 화살표는 렉시컬(22).
함정
- 제거 시 같은 함수 참조
- preventDefault 없는 submit
- 너무 많은 개별 리스너
실무
- 위임
- once/passive 옵션
- AbortController로 일괄 해제
연습·복습 체크리스트
- [ ] 핵심 표 다시 그리기
- [ ] 함정 예제 콘솔 재현
- [ ] MDN 북마크
- [ ] 실무 코드 검색·리팩터 후보
- [ ] 앞뒤 장 한 줄 연결
일기 보강
책을 덮고 한 줄 정의를 내 말로 다시 썼다. 예제 세 개를 치면 문제 유형이 보인다. 원문 복붙 없이 “왜”만 남겼다.
웹·스펙 메모
MDN 용어를 디버깅 언어로 번역해 적는다. 팀 컨벤션 초안으로 표를 제안한다.
실무 적용
PR에 체크리스트, 버그 리포트에 재현+기대/실제.
연습·복습 체크리스트
- [ ] 핵심 표 다시 그리기
- [ ] 함정 예제 콘솔 재현
- [ ] MDN 북마크
- [ ] 실무 코드 검색·리팩터 후보
- [ ] 앞뒤 장 한 줄 연결
일기 보강
책을 덮고 한 줄 정의를 내 말로 다시 썼다. 예제 세 개를 치면 문제 유형이 보인다. 원문 복붙 없이 “왜”만 남겼다.
웹·스펙 메모
MDN 용어를 디버깅 언어로 번역해 적는다. 팀 컨벤션 초안으로 표를 제안한다.
실무 적용
PR에 체크리스트, 버그 리포트에 재현+기대/실제.
연습·복습 체크리스트
- [ ] 핵심 표 다시 그리기
- [ ] 함정 예제 콘솔 재현
- [ ] MDN 북마크
- [ ] 실무 코드 검색·리팩터 후보
- [ ] 앞뒤 장 한 줄 연결
일기 보강
책을 덮고 한 줄 정의를 내 말로 다시 썼다. 예제 세 개를 치면 문제 유형이 보인다. 원문 복붙 없이 “왜”만 남겼다.
웹·스펙 메모
MDN 용어를 디버깅 언어로 번역해 적는다. 팀 컨벤션 초안으로 표를 제안한다.
실무 적용
PR에 체크리스트, 버그 리포트에 재현+기대/실제.
연습·복습 체크리스트
- [ ] 핵심 표 다시 그리기
- [ ] 함정 예제 콘솔 재현
- [ ] MDN 북마크
- [ ] 실무 코드 검색·리팩터 후보
- [ ] 앞뒤 장 한 줄 연결
일기 보강
책을 덮고 한 줄 정의를 내 말로 다시 썼다. 예제 세 개를 치면 문제 유형이 보인다. 원문 복붙 없이 “왜”만 남겼다.
웹·스펙 메모
MDN 용어를 디버깅 언어로 번역해 적는다. 팀 컨벤션 초안으로 표를 제안한다.
실무 적용
PR에 체크리스트, 버그 리포트에 재현+기대/실제.
연습·복습 체크리스트
- [ ] 핵심 표 다시 그리기
- [ ] 함정 예제 콘솔 재현
- [ ] MDN 북마크
- [ ] 실무 코드 검색·리팩터 후보
- [ ] 앞뒤 장 한 줄 연결
일기 보강
책을 덮고 한 줄 정의를 내 말로 다시 썼다. 예제 세 개를 치면 문제 유형이 보인다. 원문 복붙 없이 “왜”만 남겼다.
웹·스펙 메모
MDN 용어를 디버깅 언어로 번역해 적는다. 팀 컨벤션 초안으로 표를 제안한다.
실무 적용
PR에 체크리스트, 버그 리포트에 재현+기대/실제.
연습·복습 체크리스트
- [ ] 핵심 표 다시 그리기
- [ ] 함정 예제 콘솔 재현
- [ ] MDN 북마크
- [ ] 실무 코드 검색·리팩터 후보
- [ ] 앞뒤 장 한 줄 연결
일기 보강
책을 덮고 한 줄 정의를 내 말로 다시 썼다. 예제 세 개를 치면 문제 유형이 보인다. 원문 복붙 없이 “왜”만 남겼다.
웹·스펙 메모
MDN 용어를 디버깅 언어로 번역해 적는다. 팀 컨벤션 초안으로 표를 제안한다.
실무 적용
PR에 체크리스트, 버그 리포트에 재현+기대/실제.
연습·복습 체크리스트
- [ ] 핵심 표 다시 그리기
- [ ] 함정 예제 콘솔 재현
- [ ] MDN 북마크
- [ ] 실무 코드 검색·리팩터 후보
- [ ] 앞뒤 장 한 줄 연결
일기 보강
책을 덮고 한 줄 정의를 내 말로 다시 썼다. 예제 세 개를 치면 문제 유형이 보인다. 원문 복붙 없이 “왜”만 남겼다.
웹·스펙 메모
MDN 용어를 디버깅 언어로 번역해 적는다. 팀 컨벤션 초안으로 표를 제안한다.
실무 적용
PR에 체크리스트, 버그 리포트에 재현+기대/실제.
연습·복습 체크리스트
- [ ] 핵심 표 다시 그리기
- [ ] 함정 예제 콘솔 재현
- [ ] MDN 북마크
- [ ] 실무 코드 검색·리팩터 후보
- [ ] 앞뒤 장 한 줄 연결
일기 보강
책을 덮고 한 줄 정의를 내 말로 다시 썼다. 예제 세 개를 치면 문제 유형이 보인다. 원문 복붙 없이 “왜”만 남겼다.
웹·스펙 메모
MDN 용어를 디버깅 언어로 번역해 적는다. 팀 컨벤션 초안으로 표를 제안한다.
실무 적용
PR에 체크리스트, 버그 리포트에 재현+기대/실제.
연습·복습 체크리스트
- [ ] 핵심 표 다시 그리기
- [ ] 함정 예제 콘솔 재현
- [ ] MDN 북마크
- [ ] 실무 코드 검색·리팩터 후보
- [ ] 앞뒤 장 한 줄 연결
일기 보강
책을 덮고 한 줄 정의를 내 말로 다시 썼다. 예제 세 개를 치면 문제 유형이 보인다. 원문 복붙 없이 “왜”만 남겼다.
웹·스펙 메모
MDN 용어를 디버깅 언어로 번역해 적는다. 팀 컨벤션 초안으로 표를 제안한다.
실무 적용
PR에 체크리스트, 버그 리포트에 재현+기대/실제.
연습·복습 체크리스트
- [ ] 핵심 표 다시 그리기
- [ ] 함정 예제 콘솔 재현
- [ ] MDN 북마크
- [ ] 실무 코드 검색·리팩터 후보
- [ ] 앞뒤 장 한 줄 연결
일기 보강
책을 덮고 한 줄 정의를 내 말로 다시 썼다. 예제 세 개를 치면 문제 유형이 보인다. 원문 복붙 없이 “왜”만 남겼다.
웹·스펙 메모
MDN 용어를 디버깅 언어로 번역해 적는다. 팀 컨벤션 초안으로 표를 제안한다.
실무 적용
PR에 체크리스트, 버그 리포트에 재현+기대/실제.
연습·복습 체크리스트
- [ ] 핵심 표 다시 그리기
- [ ] 함정 예제 콘솔 재현
- [ ] MDN 북마크
- [ ] 실무 코드 검색·리팩터 후보
- [ ] 앞뒤 장 한 줄 연결
일기 보강
책을 덮고 한 줄 정의를 내 말로 다시 썼다. 예제 세 개를 치면 문제 유형이 보인다. 원문 복붙 없이 “왜”만 남겼다.
웹·스펙 메모
MDN 용어를 디버깅 언어로 번역해 적는다. 팀 컨벤션 초안으로 표를 제안한다.
실무 적용
PR에 체크리스트, 버그 리포트에 재현+기대/실제.
연습·복습 체크리스트
- [ ] 핵심 표 다시 그리기
- [ ] 함정 예제 콘솔 재현
- [ ] MDN 북마크
- [ ] 실무 코드 검색·리팩터 후보
- [ ] 앞뒤 장 한 줄 연결
일기 보강
책을 덮고 한 줄 정의를 내 말로 다시 썼다. 예제 세 개를 치면 문제 유형이 보인다. 원문 복붙 없이 “왜”만 남겼다.
웹·스펙 메모
MDN 용어를 디버깅 언어로 번역해 적는다. 팀 컨벤션 초안으로 표를 제안한다.
실무 적용
PR에 체크리스트, 버그 리포트에 재현+기대/실제.
연습·복습 체크리스트
- [ ] 핵심 표 다시 그리기
- [ ] 함정 예제 콘솔 재현
- [ ] MDN 북마크
- [ ] 실무 코드 검색·리팩터 후보
- [ ] 앞뒤 장 한 줄 연결
일기 보강
책을 덮고 한 줄 정의를 내 말로 다시 썼다. 예제 세 개를 치면 문제 유형이 보인다. 원문 복붙 없이 “왜”만 남겼다.
웹·스펙 메모
MDN 용어를 디버깅 언어로 번역해 적는다. 팀 컨벤션 초안으로 표를 제안한다.
실무 적용
PR에 체크리스트, 버그 리포트에 재현+기대/실제.
연습·복습 체크리스트
- [ ] 핵심 표 다시 그리기
- [ ] 함정 예제 콘솔 재현
- [ ] MDN 북마크
- [ ] 실무 코드 검색·리팩터 후보
- [ ] 앞뒤 장 한 줄 연결
일기 보강
책을 덮고 한 줄 정의를 내 말로 다시 썼다. 예제 세 개를 치면 문제 유형이 보인다. 원문 복붙 없이 “왜”만 남겼다.
웹·스펙 메모
MDN 용어를 디버깅 언어로 번역해 적는다. 팀 컨벤션 초안으로 표를 제안한다.
실무 적용
PR에 체크리스트, 버그 리포트에 재현+기대/실제.
연습·복습 체크리스트
- [ ] 핵심 표 다시 그리기
- [ ] 함정 예제 콘솔 재현
- [ ] MDN 북마크
- [ ] 실무 코드 검색·리팩터 후보
- [ ] 앞뒤 장 한 줄 연결
일기 보강
책을 덮고 한 줄 정의를 내 말로 다시 썼다. 예제 세 개를 치면 문제 유형이 보인다. 원문 복붙 없이 “왜”만 남겼다.
웹·스펙 메모
MDN 용어를 디버깅 언어로 번역해 적는다. 팀 컨벤션 초안으로 표를 제안한다.
실무 적용
PR에 체크리스트, 버그 리포트에 재현+기대/실제.