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){
