저장 범위 확인
localStorage는 같은 origin에서 오래 남고, sessionStorage는 탭 단위로 사라져 임시 작성 상태에 맞습니다.
수명localStorage와 sessionStorage는 둘 다 문자열 기반 동기 저장소입니다. 차이는 만료 시점뿐 아니라 탭 범위, 렌더링 차단 가능성, XSS 노출 위험, 쿠키나 IndexedDB와의 역할 분담에서 선명해집니다.
localStorage는 같은 origin에서 오래 남고, sessionStorage는 탭 단위로 사라져 임시 작성 상태에 맞습니다.
수명객체는 JSON.stringify와 parse를 거치며, 스키마 변경이나 파싱 실패를 방어해야 합니다.
형식읽기 쓰기가 메인 스레드를 막으므로 큰 데이터나 잦은 업데이트에는 IndexedDB가 더 맞습니다.
성능스크립트가 읽을 수 있는 저장소이므로 XSS가 발생하면 값도 노출된다고 보고 설계합니다.
XSSfunction readTheme() {
try {
return localStorage.getItem('theme') ?? 'system';
} catch {
return 'system';
}
}