HTML5 LocalStorage: Проверка наличия ключа [дубликат]

этот вопрос уже есть ответ здесь:

почему это не работает ?

if(typeof(localStorage.getItem("username"))=='undefined'){
    alert('no');
};

цель состоит в том, чтобы перенаправить пользователя со страницы индекса на страницу входа в систему, если он еще не зарегистрирован. Здесь localStorage.getItem("username")) переменная не определена для момент.

Это для приложения iOS phonegap.

4 ответов


слово спецификация:

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

вы должны на самом деле проверить против null.

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

этот метод работает для меня:

if("username" in localStorage){
    alert('yes');
} else {
   alert('no');
}

на документация MDN показывает, как getItem реализован метод:

Object.defineProperty(oStorage, "getItem", {
      value: function (sKey) { return sKey ? this[sKey] : null; },
      writable: false,
      configurable: false,
      enumerable: false
    });

если значение не задано, то возвращается null. Вы тестируете, чтобы увидеть, если это undefined. Проверьте, если это .

if(localStorage.getItem("username") === null){

обновление:

if (localStorage.hasOwnProperty("username")) {
    //
}

другой способ, релевантный, когда значение не должно быть пустой строкой, null или любым другим ложным значением:

if (localStorage["username"]) {
    //
}