【问题标题】:Why localStorage return a string value with case null and undefined [duplicate]为什么 localStorage 返回一个字符串值,其大小写为 null 且未定义 [重复]
【发布时间】:2020-02-29 14:54:45
【问题描述】:

当我将 null/undefined 值保存到 localStorage 时。我在使用localStorage.getItem 时收到的结果将是一个字符串 ("null" or "undefined")

localStorage.setItem("item1", null)
localStorage.setItem("item2", undefined)

const item1 = localStorage.getItem("item1")
const item2 = localStorage.getItem("item2")

console.log(item1) // The result will be "null" not null
console.log(item2) // The result will be "undefined" not undefined

任何人都可以用这个案例为我解释一下!

【问题讨论】:

    标签: javascript local-storage


    【解决方案1】:

    Js 确实将其字符串化到本地存储

    storage.setItem(keyName, keyValue)
    

    keyName 和 KeyValue 都是 DOMString 类型

    DOMString 是一个 UTF-16 字符串。由于 JavaScript 已经使用此类字符串,因此 DOMString 直接映射到字符串。

    将 null 传递给通常接受 DOMString 的方法或参数 字符串化为“null”

    我看到我们同时有 2 个答案,所以只需添加他来自 mdn docsDOMString 的部分

    【讨论】:

    • 没有必要要求澄清,我认为这是他/她要的答案,虽然在问题的解释上我可能是错的。
    • 这应该去评论部分或尝试用一些代码示例来解释一下。
    • @jitender 点了,我已经添加了相同所需的所有信息,我希望这会有所帮助
    【解决方案2】:

    DOMString 是一个 UTF-16 字符串。由于 JavaScript 已经使用了这样的字符串, DOMString 直接映射到一个字符串。

    将 null 传递给通常接受 DOMString 的方法或参数 字符串化为“null”。

    看看这个:https://stackoverflow.com/a/47150855/10971575

    【讨论】:

      【解决方案3】:

      本地存储只能保存字符串,所以存储对象需要使用JSON转成字符串。 stringify - 你不能让本地存储直接存储一个对象,因为它会存储“[object Object]”,这根本不对!

      // set new item which holds a numeric value
      localStorage.setItem('number', 1);
      // it would be a string value. localStorage only returns string value
      console.log(typeof localStorage.getItem('number'));
      

      【讨论】:

        猜你喜欢
        • 2017-09-27
        • 2014-10-10
        • 1970-01-01
        • 1970-01-01
        • 2019-09-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-30
        相关资源
        最近更新 更多