728x90
    
    
  1. 이벤트 전파: 버블링 vs 캡처링
✅ DOM 중첩 구조 예시
네가 올린 이미지처럼 DOM은 아래처럼 중첩된 박스처럼 되어 있어:
body
└─ main
    └─ div
        └─ p
            └─ span
이벤트는 이렇게 안쪽 ↔ 바깥쪽으로 흘러간다.
캡처링 (Capturing Phase)
- 이벤트가 가장 바깥쪽 → 가장 안쪽으로 전파
 - 예: body → main → div → p → span
 - 흔히 캡처 단계라고 부름
 
타깃 단계 (Target Phase)
- 이벤트가 실제로 발생한 요소에서 실행
 - 예: span에서 클릭 발생
 
버블링 (Bubbling Phase)
- 이벤트가 안쪽 → 바깥쪽으로 전파
 - 예: span → p → div → main → body
 - 디폴트 동작은 대부분 버블링
 
✅ event.eventPhase 값
event.eventPhase로 현재 단계 알 수 있음
| eventPhase 값 | 의미 | 
| 1 | Capturing Phase | 
| 2 | Target Phase | 
| 3 | Bubbling Phase | 
✅ 버블링/캡처링 코드 예시
HTML
<div id="outer">
  <div id="inner">클릭해보세요!</div>
</div>
js
document.getElementById("outer").addEventListener(
  "click",
  (e) => {
    console.log("outer div 캡처링 단계", e.eventPhase);
  },
  true // 캡처링
);
document.getElementById("inner").addEventListener(
  "click",
  (e) => {
    console.log("inner div 버블링 단계", e.eventPhase);
  },
  false // 버블링
);
2. JS 모듈 import/export
✅ ES6 모듈 기본 문법
1) export
파일 math.js
export const add = (a, b) => a + b;
export const multiply = (a, b) => a * b;
2) import
파일 main.js
import { add, multiply } from "./math.js";
console.log(add(2, 3)); // 5
console.log(multiply(2, 3)); // 6
default export
math.js
export default function subtract(a, b) {
  return a - b;
}
main.js
import subtract from "./math.js";
console.log(subtract(5, 2)); // 3
✅ 모듈 사용 시 주의
- import/export는 브라우저에서 type="module" 필요
 - 
html
 
<script type="module" src="main.js"></script>
3. Array API
✅ map
- 배열의 각 요소를 변환 → 새로운 배열 반환
 
const nums = [1, 2, 3];
const doubled = nums.map(n => n * 2);
console.log(doubled); // [2, 4, 6]
✅ some
- 배열 중 하나라도 조건 만족하면 true
 
const nums = [1, 2, 3];
console.log(nums.some(n => n > 2)); // true
✅ reduce
- 배열 요소를 하나의 값으로 누적
 
const nums = [1, 2, 3, 4];
const sum = nums.reduce((acc, curr) => acc + curr, 0);
console.log(sum); // 10
✅ filter
- 조건에 맞는 요소만 추출 → 새로운 배열
 
const nums = [1, 2, 3, 4];
const even = nums.filter(n => n % 2 === 0);
console.log(even); // [2, 4]
✅ 마무리
오늘은 프런트엔드 개발자가 꼭 알아야 할
- 이벤트 전파 (버블링/캡처링)
 - ES6 모듈 시스템
 - Array API (map, some, reduce, filter)
 
를 정리했어.작은 차이를 이해하면 코드가 더 깔끔하고 효율적해질 수 있으니 꼭 익혀두자!
728x90
    
    
  '개발자 성장 로드맵 > 프론트엔드' 카테고리의 다른 글
| NPM 기초 완전 정리 (2) | 2025.07.11 | 
|---|---|
| 자바스크립트 모듈 시스템 완전 정리 (2) | 2025.07.11 | 
| Front-End 필수 개념: script 로드 전략과 this 이해하기 (2) | 2025.07.10 | 
| DOM + BOM 구조 설명 (0) | 2025.07.10 | 
| 프론트엔드 개발자 입문 로드맵 (2) | 2025.06.21 |