なぜこれが機能しないのですか?
if(typeof(localStorage.getItem("username"))=='undefined'){
alert('no');
};
目標は、まだログインしていない場合、ユーザーをインデックスページからログインページにリダイレクトすることです。ここでは、localStorage.getItem("username"))
変数は現時点では定義されていません。
IOSのphonegapアプリ用です。
仕様 からの引用:
GetItem(key)メソッドは、指定されたキーに関連付けられた現在の値を返す必要があります。指定されたキーがオブジェクトに関連付けられたリストに存在しない場合、このメソッドはnullを返す必要があります。
実際にnull
をチェックする必要があります。
if (localStorage.getItem("username") === null) {
//...
}
この方法は私のために働いた:
if ("username" in localStorage) {
alert('yes');
} else {
alert('no');
}
更新:
if (localStorage.hasOwnProperty("username")) {
//
}
別の方法は、値が空の文字列、null、またはその他の偽の値であると予想されない場合に関連します。
if (localStorage["username"]) {
//
}
MDN documentation は、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){