В чём отличие localStorage и sessionStorage?

👨‍💻 Frontend Developer 🟠 Может встретиться 🎚️ Средний
#JavaScript #Браузер #База JS

Краткий ответ

Главное отличие между [localStorage] и [sessionStorage]:

  1. localStorage — данные сохраняются навсегда (пока не удалишь) 💾
  2. sessionStorage — данные сохраняются только до закрытия вкладки 🕐
// localStorage — навсегда
localStorage.setItem('name', 'Иван');
// Даже после перезагрузки страницы и закрытия браузера
// данные останутся
 
// sessionStorage — до закрытия вкладки
sessionStorage.setItem('temp', 'временные данные');
// После закрытия вкладки данные исчезнут

Полный ответ

Представь, что [localStorage] — это сейф, где ты хранит важные вещи навсегда, а [sessionStorage] — карман в куртке, куда кладёшь вещи только на время прогулки! 🏦 vs 🧥

localStorage — постоянное хранение

Данные остаются в браузере навсегда:

// Сохраняем данные
localStorage.setItem('theme', 'dark');
localStorage.setItem('language', 'ru');
 
// Можно закрыть браузер, перезагрузить компьютер
// Данные всё равно будут здесь!
console.log(localStorage.getItem('theme')); // 'dark'

sessionStorage — временное хранение

Данные живут только во время сессии (пока открыта вкладка):

// Сохраняем временные данные
sessionStorage.setItem('formStep', '2');
sessionStorage.setItem('tempData', 'что-то временное');
 
// После закрытия вкладки — всё исчезает!
// При открытии новой вкладки — хранилище пустое

Когда что использовать

localStorage — для постоянных данных

// ✅ Настройки пользователя
localStorage.setItem('theme', 'dark');
localStorage.setItem('language', 'ru');
 
// ✅ Токены авторизации (осторожно!)
localStorage.setItem('token', 'abc123');
 
// ✅ Прогресс в играх
localStorage.setItem('level', '5');

sessionStorage — для временных данных

// ✅ Данные формы во время заполнения
sessionStorage.setItem('formData', JSON.stringify({name: 'Иван'}));
 
// ✅ Временные состояния страницы
sessionStorage.setItem('scrollPosition', '100');
 
// ✅ Данные для одной сессии
sessionStorage.setItem('visitCount', '3');

Общие особенности

Одинаковый синтаксис

// Оба работают одинаково
localStorage.setItem('key', 'value');
sessionStorage.setItem('key', 'value');
 
localStorage.getItem('key');
sessionStorage.getItem('key');
 
localStorage.removeItem('key');
sessionStorage.removeItem('key');

Хранят только строки

// Оба хранят только строки!
localStorage.setItem('number', 42); // Сохранится как '42'
localStorage.setItem('object', {name: 'Иван'}); // Сохранится как '[object Object]'
 
// Для объектов используй JSON
localStorage.setItem('user', JSON.stringify({name: 'Иван'}));
const user = JSON.parse(localStorage.getItem('user'));

Частые ошибки

Путать время жизни

// ❌ Ошибка — думают, что sessionStorage тоже навсегда
sessionStorage.setItem('importantSetting', 'dark');
// После закрытия вкладки настройка исчезнет!
 
// ✅ Правильно — использовать localStorage для важного
localStorage.setItem('importantSetting', 'dark');

Хранить конфиденциальные данные в localStorage

// ❌ Плохо — localStorage можно легко прочитать
localStorage.setItem('password', '123456');
 
// ✅ Лучше — использовать безопасные методы
// или хотя бы sessionStorage (меньше шансов утечки)
sessionStorage.setItem('token', 'abc123');

Простые правила

  1. localStorage — данные остаются навсегда 💾
  2. sessionStorage — данные исчезают при закрытии вкладки 🕐
  3. localStorage — для постоянных настроек 🎯
  4. sessionStorage — для временных данных ⏳
  5. Оба хранят строки — используй JSON для объектов 📦
  6. Безопасность — не храните пароли в localStorage 🔐

Понимание разницы между [localStorage] и [sessionStorage] помогает правильно хранить данные в браузере! 💪


Хотите больше статей для подготовки к собеседованиям? Подписывайтесь на EasyAdvice, добавляйте сайт в закладки и совершенствуйтесь каждый день 💪