У меня возникают проблемы с пониманием странного поведения в моем коде, и мне интересно, кто-нибудь может сказать мне, что я делаю неправильно?
У меня есть логическая переменная isWaiting
, и она сохраняется как false
в localStorage
, и когда он получен, он отображается как false
, но когда вы делаете проверку, он не видит это таким образом.Вот небольшой код для репликации моей проблемы:
(function(){
localStorage.setItem("isWaiting", false);
var isWaiting = localStorage.getItem("isWaiting");
console.log("isWaiting = " + isWaiting)
console.log("Is isWaiting False? " + Boolean(isWaiting === false));
// I have tried it as this as well
console.log("Is isWaiting False? " + (isWaiting === false));
})()
Должен получить:
isWaiting = false
Является ли isWaiting False?true
Производит:
isWaiting = false
isWAiting False?false ⬅ Это явно неправильно , так почему это происходит?
Что я делаю не так?Является ли логическое значение false каким-либо образом искаженным в процессе localStorage
, и если да, то как бы я его учел, если нет, то что не так?
Решение Обновление: 10/09 /18
Основываясь на любезных ответах, помогающих мне подтвердить, что мое подозрение, что процесс LS уничтожает тип значения, было верным, и, более конкретно, решение, предоставленное @ bhojendra-rauniyar, я изменил код, чтобы исправитьвведите прямо в момент поиска, а затем обработайте его как обычно во всем коде, избегая тонны добавленного кода, и, кажется, он добился цели, спасибо всем за вашу помощь.
...
var isWaiting = Boolean(JSON.parse(localStorage.getItem("isWaiting")));
...