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