HTML5 LocalStorage:检查密钥是否存在

为什么这不起作用?

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

目标是将用户从索引页面redirect到login页面(如果尚未logging)。 这里localStorage.getItem("username"))variables暂时没有定义。

这是一个iOS手机应用程序。

从规格引用:

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

你应该实际检查null

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

这个方法适用于我:

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

MDN文档显示了如何实现getItem方法:

 Object.defineProperty(oStorage, "getItem", { value: function (sKey) { return sKey ? this[sKey] : null; }, writable: false, configurable: false, enumerable: false }); 

如果该值未设置,则返回null 。 您正在testing以查看它是否undefined 。 检查它是否为null

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

另一种方法是:

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