Почему при записи в локальную память браузера не получается получить правильные данные?

Я пытался записать в локальную память некоторые данные и все вроде получилось, но когда попытался проверить соотвествуют ли введенные данные соответствующему ключу, получаю не тот результат, что ожидал.

localStorage.setItem("login", JSON.stringify("Tom12!"));
localStorage.setItem("token", JSON.stringify("QhuR56Rw"));

console.log(localStorage.getItem("login") === "Tom12!"); // Ожидаю true, но получаю false
console.log(localStorage.getItem("token") === "QhuR56Rw"); // Ожидаю true, но получаю false

Я ожидал получить true, но получаю false. Почему?


Ответы (2 шт):

Автор решения: humster_spb

А зачем Вам JSON.stringify? Он записывает в локальное хранилище значение в виде "Tom12!", то есть вместе с кавычками. Сравнивать тогда надо с конструкцией "\"Tom12!\"":

console.log(JSON.stringify("Tom12!") === "\"Tom12!\"");

→ Ссылка
Автор решения: Roman Grinyov

Вы забыли JSON.parse():

localStorage.setItem("login", JSON.stringify("Tom12!"));
localStorage.setItem("token", JSON.stringify("QhuR56Rw"));

console.log(JSON.parse(localStorage.getItem("login")) === "Tom12!"); // true
console.log(JSON.parse(localStorage.getItem("token")) === "QhuR56Rw"); //true

https://jsfiddle.net/ej6asc4k

→ Ссылка