javascript - HTML5 LocalStorage: Kontrollera om en nyckel finns


Varför fungerar inte detta?

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

Målet är att omdirigera användaren från indexsidan till inloggningssidan om denne inte redan är inloggad. Här är localStorage.getItem("username"))-variabeln inte definierad för tillfället.

Det är för en iOS PhoneGap-app.

Svar #1

Citerar från specifikationen:

Metoden getItem(key) måste returnera det aktuella värdet som är kopplat till den angivna nyckeln. Om den angivna nyckeln inte finns i listan som är kopplad till objektet måste denna metod returnera null.

Du borde faktiskt kontrollera mot null.

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

Svar #2

Denna metod fungerade för mig:

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

Svar #3

Uppdatering:

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

Ett annat sätt, relevant när värdet inte förväntas vara en tom sträng, null eller något annat falskt värde:

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

Svar #4

MDN-dokumentationen visar hur getItem-metoden är implementerad:

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

Om värdet inte är satt returnerar det null. Du testar för att se om det är undefined. Kontrollera istället om det är null.

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

Relaterade artiklar