body 클래스 전환 (light-mode ↔ dark-mode)localStorage를 통해 테마 상태를 브라우저에 영구 저장localStorage.setItem('theme', currentTheme);
document.body.classList.add(savedTheme);
todos: 할 일 배열 (id, text, completed)currentFilter: 필터 상태 ('all', 'active', 'completed')addTodo())deleteTodo())toggleTodo())clearCompletedTodos())state.todos = state.todos.filter(todo => !todo.completed);
state.todos = state.todos.map(todo => todo.id === id ? {...todo, completed: true} : todo);
ul 내부에 <li> 동적으로 생성active 클래스 처리submit, click 이벤트 처리로 추가/삭제/체크 동작closest('.todo-item')로 이벤트 대상의 ID 추출dataset.id 활용해 각 할 일 요소 추적render() 호출✅ 총정리