Html 为什么本地存储必须是字符串?

Html 为什么本地存储必须是字符串?,html,local-storage,session-storage,Html,Local Storage,Session Storage,我知道在window.localStorage或window.sessionStorage中设置项时,需要首先将其转换为字符串。我只是想知道。。。为什么它是这样设计的?我试着在谷歌上搜索,但找不到任何关于原因的文章;我发现的大部分内容都是关于如何设置本地存储的文章。我认为您总是会得到一个字符串,但您可以保存任何值,您可以使用开发人员工具控制台查看日志输出: <script type="text/javascript"> //Store localStorage.set

我知道在window.localStorage或window.sessionStorage中设置项时,需要首先将其转换为字符串。我只是想知道。。。为什么它是这样设计的?我试着在谷歌上搜索,但找不到任何关于原因的文章;我发现的大部分内容都是关于如何设置本地存储的文章。

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

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

//贮藏
setItem(“整数”,1);
setItem(“float”,1.5);
setItem(“string”,“Hello”);
setItem(“数组”,[1,2,3,4,5]);
//取回
log(localStorage.getItem(“整数”)==“1”);
log(localStorage.getItem(“float”)=“1.5”);
log(localStorage.getItem(“string”)=“Hello”);
log(localStorage.getItem(“数组”)=“1,2,3,4,5”);
输出:


没错,但所有内容都转换为字符串。如果我尝试设置一个对象,它将转换为“[object]”。数组作为字符串转换为逗号分隔的列表。基本数据类型转换为字符串。我可以将非字符串设置为localStorage,但它们会转换为字符串。我的问题是。。。。为什么?我不确定,但我认为您可以将大量工作保存为字符串保存键和值,以便能够保存不同类型的数据,因为您可以保存整数、浮点、字符串、数组,甚至布尔值或具有相同功能的对象。映像带有:localStorage.set(数据类型)项(…)的localStore Javascript是一种弱类型语言。要求将值存储为字符串。它没有说明原因,但很可能与(易于)序列化和反序列化有关,尽管有人可能认为序列化/反序列化应该是一个实现细节。现在,如果这个设计决策被记录在某个地方。。。