为什么这不起作用?
if(typeof(localStorage.getItem("username"))=='undefined'){ alert('no'); };
目标是将用户从索引页面重定向到登录页面(如果还没有登录的话)。 这里暂时没有定义 localStorage.getItem("username"))变量。
localStorage.getItem("username"))
这是 ios 手机应用程序。
MDN 文档展示了 getItem方法是如何实现的:
getItem
Object.defineProperty(oStorage, "getItem", { value: function (sKey) { return sKey ? this[sKey] : null; }, writable: false, configurable: false, enumerable: false });
如果未设置该值,则返回 null。您正在测试它是否是 undefined。检查它是否是 null代替。
null
undefined
if(localStorage.getItem("username") === null){
引自 规格:
GetItem (key)方法必须返回与给定键关联的当前值。如果与该对象关联的列表中不存在给定的键,则此方法必须为 返回空。
你应该检查一下 null。
if (localStorage.getItem("username") === null) { //... }
这种方法对我很有效:
if ("username" in localStorage) { alert('yes'); } else { alert('no'); }
更新:
if (localStorage.hasOwnProperty("username")) { // }
另一种方法是,当值不是空字符串、 null 或任何其他虚假值时:
if (localStorage["username"]) { // }