JavaScript localStorage — постійне сховище браузера


localStorage зберігає дані в браузері назавжди — вони переживають і перезавантаження, і закриття браузера.

автор: NagarD

Загальний опис

Зберігає лише рядки. Число 42 перетвориться на '42', а об'єкт — на безглузде '[object Object]'. Тому об'єкти кладуть через JSON.stringify(), а дістають через JSON.parse().

Обсяг обмежений — близько 5 МБ на домен. Спроба перевищити кидає помилку, тож запис великих даних варто загортати в try...catch.

І найважливіше: доступ синхронний. Читання блокує головний потік. Класти туди мегабайти й читати їх на кожен кадр — прямий шлях до гальм.

У приватному режимі сховище може бути недоступним узагалі — код має це переживати.

автор: NagarD

Нотатка

Ніколи не зберігай тут токени й паролі. Будь-який скрипт на сторінці читає localStorage без перешкод — одна XSS-вразливість, і дані користувача пішли.

автор: NagarD

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
localStorage 4+ 3.5+ 4+ 10.5+ 12+ 8+
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
localStorage yes yes yes yes

Приклади

+ запропонувати свій приклад у пісочниці

Тема сайту, що переживає перезавантаження, і об'єкт через JSON.

// зберігається ЛИШЕ рядок
localStorage.setItem('theme', 'dark');
console.log(localStorage.getItem('theme')); // 'dark'

// об'єкт — через JSON
localStorage.setItem('user', JSON.stringify({ name: 'Іван', id: 1 }));
const user = JSON.parse(localStorage.getItem('user'));

// немає ключа — null, а не помилка
console.log(localStorage.getItem('missing')); // null

localStorage.removeItem('theme');

// у приватному режимі може кинути помилку
try {
    localStorage.setItem('big', hugeString);
} catch {
    console.warn('Сховище недоступне або переповнене');
}
автор: NagarD

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Пропозиція правки

Ваша версія — : після перевірки замінить чинну. Нова порада чи нотатка — з'явиться на сторінці після перевірки.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія секції «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія опису «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Зворотний зв'язок
Вхід