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) {
//...
}
на документация 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"]) {
//
}