Для чего нужен local storage?
DOM и браузер
localStorage нужен для хранения данных на клиенте с бессрочным сроком жизни — настроек, черновиков, простого кеша, которые должны сохраняться между сессиями.
Для чего используют
- Настройки/предпочтения — тема, язык, макет.
- Черновики — несохранённый ввод форм.
- Простой кеш — данные, которые дорого перезапрашивать.
- Флаги — «баннер закрыт», «онбординг пройден».
localStorage.setItem('theme', 'dark');
localStorage.getItem('theme'); // 'dark'
localStorage.setItem('user', JSON.stringify({ name: 'Ann' })); // объекты через JSONОсобенности
- Бессрочно — данные сохраняются, пока не удалят.
- ~5–10 МБ — больше cookie.
- Только строки — объекты сериализуют через JSON.
- Только клиент — не отправляется на сервер.
- Синхронный API.
- Общий для вкладок одного origin.
Событие storage
Изменение localStorage в одной вкладке вызывает событие storage в других — для синхронизации.
Ограничения
- Не для секретов — уязвим к XSS (токены хранят в памяти/HttpOnly cookie).
- Синхронный доступ может блокировать при больших объёмах.
Коротко для собеседования
localStorage нужен для клиентского хранения данных, переживающих сессии: настройки, черновики, простой кеш, флаги. Бессрочный, ~5–10 МБ, только строки (объекты через JSON), только клиент, синхронный. Не для токенов (XSS). Изменения ловятся событием storage в других вкладках.