HTML5 LocalStorage: проверка наличия ключа

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

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

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

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

Ответ 1

Цитата из спецификация:

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

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

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

Ответ 2

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

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

Ответ 3

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

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

Если значение не установлено, оно возвращает null. Вы тестируете, есть ли undefined. Проверьте, есть ли вместо этого null.

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

Ответ 4

Другой способ:

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