31

我正在使用系统在站点发生重大更新时提醒用户,并且我使用 LocalStorage 来执行此操作,当我制作系统时,我让系统检查提示是否为“null”,然后将“提示”设置为当他们收到警报时是真的。现在,我想将“tip”本地存储设置回 null,并改用“tip2”。

我会这样做吗?localStorage.setItem('tip', 'null');

4

2 回答 2

35

localStorage.removeItem('tip')如果您打算删除密钥

localStorage.setItem('tip', 'null')如果您只想将其设置为字符串“null”

于 2013-03-04T02:09:03.307 回答
20

无法将 localStorage 项设置为 null 值。请改用删除。

任何 localStorage 项目要么具有字符串值,要么不存在。没有其他类型是可能的,因此 null 的变化也不可能。

令人困惑的部分是,正如您在示例中注意到的那样,如果您调用 localStorage.getItem('tip') 并且它不存在,您将在调试器中或尝试显示该值时看到 null 返回值。

尽管这很不直观,但这并不意味着本地存储项实际上存在值为 null。这实际上意味着项目“提示”根本不存在。甚至没有任何与关键“提示”相关的任何内部痕迹。

对于确实存在的项目,如果您尝试将项目设置为“返回 null”(这是不可能的),那么您应该做的是删除该项目。

在您的示例中,这将导致您再次看到返回值显示为 null,就像您第一次调用 localStorage.getItem('tip') 时一样,即使它不为 null,它也根本不存在。为此,您可以按如下所述删除该项目。

请记住,您所需要的只是获取设置删除

localStorage.getItem('tip')                             // 获取项目值
localStorage.setItem('tip','cool stuff')     // 设置项目值
localStorage.removeItem('tip')                       // 移除项目
if (localStorage.getItem('tip') === null)  // 检查项目是否存在

从技术上讲,@Michael Theriot 的回答是建议将项目提示设置为字符串值“null”。这与将其设置为“dog”没有太大区别,因为它们中的任何一个都不是系统识别的空值。

我猜这不是你的意思,但即使是这样,我也会倾向于反对这种做法,因为它可能会让维护你的代码的其他人感到困惑。

于 2017-09-02T16:06:05.330 回答