web-dev-qa-db-ja.com

HTML5 LocalStorage:キーが存在するかどうかを確認する

なぜこれが機能しないのですか?

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

目標は、まだログインしていない場合、ユーザーをインデックスページからログインページにリダイレクトすることです。ここでは、localStorage.getItem("username"))変数は現時点では定義されていません。

IOSのphonegapアプリ用です。

113
Gabriel

仕様 からの引用:

GetItem(key)メソッドは、指定されたキーに関連付けられた現在の値を返す必要があります。指定されたキーがオブジェクトに関連付けられたリストに存在しない場合、このメソッドはnullを返す必要があります。

実際にnullをチェックする必要があります。

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

この方法は私のために働いた:

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

更新:

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

別の方法は、値が空の文字列、null、またはその他の偽の値であると予想されない場合に関連します。

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

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