【问题标题】:Why does localstorage have to be a string?为什么 localstorage 必须是字符串?
【发布时间】:2019-08-13 00:25:13
【问题描述】:

我知道在window.localStorage 或window.sessionStorage 中设置项时,需要先将其转换为字符串。我只是想知道......为什么它是这样设计的?我尝试用谷歌搜索,但找不到任何关于原因的文章;我发现的主要是关于如何设置 localStorage 的文章。

【问题讨论】:

  • spec 要求将值存储为字符串。它没有说明原因,但很可能与(易于)序列化和反序列化有关,尽管有人可能会争辩说序列化/反序列化应该是一个实现细节。现在,如果只有这个设计决策被记录在某个地方......

标签: html local-storage session-storage


【解决方案1】:

我认为你总是得到一个字符串但你可以保存任何值,你可以使用开发者工具控制台查看日志输出:

<script type="text/javascript">
    //Store
    localStorage.setItem("integer", 1);
    localStorage.setItem("float", 1.5);
    localStorage.setItem("string", "Hello");
    localStorage.setItem("array", [1, 2, 3, 4, 5]);

    //Retrieve
    console.log(localStorage.getItem("integer")==="1");
    console.log(localStorage.getItem("float")==="1.5");
    console.log(localStorage.getItem("string")==="Hello");
    console.log(localStorage.getItem("array")==="1,2,3,4,5");
</script>

输出:

【讨论】:

  • 正确,但所有内容都转换为字符串。如果我尝试设置一个对象,它将转换为“[对象对象]”。将数组转换为以逗号分隔的列表作为字符串。原始数据类型转换为字符串。我可以将非字符串设置为 localStorage,但它们会转换为字符串。我的问题是……为什么?
  • 我不确定,但我认为您可以节省大量工作,将键和值保存为字符串,以便能够保存不同类型的数据,因为您可以保存整数、浮点数、字符串、数组甚至布尔值或具有相同功能的对象。使用以下内容对 localStore 进行映像:localStorage.set(Data Type)Item(...) Javascript 是一种弱类型语言。
猜你喜欢
  • 2016-07-19
  • 1970-01-01
  • 2011-08-29
  • 2019-11-26
  • 2019-10-15
  • 1970-01-01
  • 1970-01-01
  • 2018-01-24
  • 2015-05-29
相关资源
最近更新 更多