Когда происходит автоматическая очистка данных в sessionStorage?

Ответ

Данные в sessionStorage автоматически очищаются при закрытии вкладки браузера (или окна браузера, если это последняя вкладка).

Ключевые особенности:

  • Область видимости: Данные привязаны к протоколу, домену и порту (как и localStorage), но также изолированы в рамках конкретной вкладки/сессии.
  • Сохранение при обновлении: Данные сохраняются при перезагрузке страницы (F5, location.reload()).
  • Новая вкладка = новое хранилище: Открытие страницы в новой вкладке создает новый, независимый экземпляр sessionStorage, даже если это тот же URL.

Пример работы с API:

// Запись данных
sessionStorage.setItem('userToken', 'abc123xyz');
sessionStorage.setItem('lastVisitedPage', '/dashboard');

// Чтение данных
const token = sessionStorage.getItem('userToken'); // 'abc123xyz'

// Удаление конкретного элемента
sessionStorage.removeItem('lastVisitedPage');

// Полная очистка хранилища (вручную)
sessionStorage.clear();

// Проверка количества элементов
const count = sessionStorage.length;

Для долговременного хранения данных между сессиями используется localStorage.

Ответ 18+ 🔞

Так, слушай, вот тебе про эту вашу sessionStorage, чтобы ты, наконец, перестал путать её с той, которая localStorage. Это же две большие разницы, ёпта!

Представь себе: sessionStorage — это как твой временный столик в кабаке. Пока ты сидишь за ним, пьёшь пиво, можешь класть на него свои окурки, телефон, ключи — всё, что в голову взбредёт. Но как только ты, мудак, закрыл вкладку (то есть, грубо говоря, встал и ушёл), охуевший официант всё это смахивает тряпкой в пизду. Стол чист. Всё, что не успел в карманы запихнуть — пропало.

Главные приколы этой штуки:

  • Где работает: Данные привязаны жёстко. К протоколу, домену и порту. И, что самое главное, к конкретной вкладке. Открыл новую вкладку — получил новый, абсолютно пустой столик. Даже если URL тот же самый. Это как сесть за соседний столик в том же баре — а на нём уже ни твоих окурков, ни твоего пива.
  • Перезагрузка — не конец: Страницу обновил (F5 долбил) — всё норм, данные на месте. Это как ты отошёл в сортир, а вернулся — столик твой, и вещи на нём ещё не успели спиздить.
  • Новая вкладка = новый мудак: Открыл страницу в новой вкладке? Поздравляю, ты получил абсолютно чистый, девственный экземпляр sessionStorage. Никакой связи со старой вкладкой. Вообще. Ноль.

Ну и как с этим ебланом работать, спросишь ты? А вот так, смотри:

// Запихнули что-то в хранилище
sessionStorage.setItem('userToken', 'abc123xyz'); // Положили ключи от машины
sessionStorage.setItem('lastVisitedPage', '/dashboard'); // И чек из магазина

// Достали обратно
const token = sessionStorage.getItem('userToken'); // 'abc123xyz' — ключи на месте, отлично

// Выкинули какую-то одну херню
sessionStorage.removeItem('lastVisitedPage'); // Чек выбросили, он не нужен

// Устроили полный пиздец и зачистили всё
sessionStorage.clear(); // Всё со стола смахнули, хоть плачь

// Посчитали, сколько там у нас сейчас этого барахла валяется
const count = sessionStorage.length;

А если тебе надо, чтобы данные пережили даже твой уход из кабака (закрытие вкладки), и на следующий день ты пришёл, а они на месте — тогда тебе нужна уже localStorage. Это как твой личный сейф за стойкой бармена. Но это, блядь, уже совсем другая история.