Как проверить, установлен ли элемент хранилища? - PullRequest
245 голосов
/ 16 июля 2010

Как я могу проверить, установлен ли элемент в localStorage? В настоящее время я использую

if (!(localStorage.getItem("infiniteScrollEnabled") == true || localStorage.getItem("infiniteScrollEnabled") == false)) {
    // init variable/set default variable for item
    localStorage.setItem("infiniteScrollEnabled", true);
}

Ответы [ 9 ]

434 голосов
/ 16 июля 2010

Метод getItem в спецификации WebStorage явно возвращает null, если элемент не существует:

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

Итак, вы можете:

if (localStorage.getItem("infiniteScrollEnabled") === null) {
  //...
}

Смотрите этот вопрос по теме:

25 голосов
/ 04 января 2017

Вы можете использовать метод hasOwnProperty, чтобы проверить это

> localStorage.setItem('foo', 123)
undefined
> localStorage.hasOwnProperty('foo')
true
> localStorage.hasOwnProperty('bar')
false

Работает в текущих версиях Chrome (Mac), Firefox (Mac) и Safari.

17 голосов
/ 20 февраля 2014

Самый короткий способ - использовать значение по умолчанию, если ключ не находится в хранилище:

var sValue = localStorage['my.token'] || ''; /* for strings */
var iValue = localStorage['my.token'] || 0; /* for integers */
4 голосов
/ 29 февраля 2016

Вы также можете попробовать это, если хотите проверить неопределенность:

if (localStorage.user === undefined) {
    localStorage.user = "username";
}

getItem - метод, который возвращает ноль, если значение не найдено.

1 голос
/ 24 сентября 2017

Вы должны проверить тип предмета в localStorage

if(localStorage.token !== null) {
   // this will only work if the token is set in the localStorage
}

if(typeof localStorage.token !== 'undefined') {
  // do something with token
}

if(typeof localStorage.token === 'undefined') {
  // token doesn't exist in the localStorage, maybe set it?
}
1 голос
/ 10 августа 2016
if(!localStorage.hash) localStorage.hash = "thinkdj";

Или

var secret =  localStorage.hash || 42;
1 голос
/ 08 октября 2015

Как можно проверить наличие предмета в localStorage?этот метод работает в Internet Explorer.

<script>
    try{
        localStorage.getItem("username");
    }catch(e){
        alert("we are in catch "+e.print);
    }
</script>
1 голос
/ 22 августа 2014

Для ИСТИНА

localStorage.infiniteScrollEnabled = 1;

ДЛЯ ЛОЖЬ

localStorage.removeItem("infiniteScrollEnabled")

ПРОВЕРКА СУЩЕСТВОВАНИЯ

if (localStorage[""infiniteScrollEnabled""]) {
  //CODE IF ENABLED
}
0 голосов
/ 26 июня 2014
localStorage['root2']=null;

localStorage.getItem("root2") === null //false

Может быть, лучше сделать сканирование плана?

localStorage['root1']=187;
187
'root1' in localStorage
true
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...