HTML5 LocalStorage:检查密钥是否存在

时间:2013-04-15 08:32:55

标签: javascript html5 cordova local-storage

为什么这不起作用?

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

目标是将用户从索引页面重定向到登录页面(如果尚未记录)。 目前尚未定义localStorage.getItem("username"))变量。

这是ios phonegap应用程序。

4 个答案:

答案 0 :(得分:252)

引用specification

  

getItem(key)方法必须返回与给定键关联的当前值。如果与对象关联的列表中不存在给定键,则此方法必须返回null。

您应该实际检查null

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

答案 1 :(得分:31)

这种方法对我有用:

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

答案 2 :(得分:15)

<强>更新

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

另一种方式,当值不是空字符串,null或任何其他虚假值时相关:

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

答案 3 :(得分:13)

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