如何正确设置 localStorage 变量

How to set localStorage variables properly

在 localStorage 中设置变量的正确方法是什么?

localStorage.hello = 'world'

localStorage.setItem('hello','world')

使用的方法不太可能重要。 The standard 列出以下方法是等价的:

storage.setItem (key, value)
storage[key] = value

Sets the value of the pair identified by key to value, creating a new key/value pair if none existed for key previously.

非常不寻常的情况下,setItemgetItem 比点符号赋值或检索更受欢迎,这是在原型上的属性可能被引用时 - 例如 .length.__proto__。 (但是动态存储键是一个非常糟糕的主意 - 最好将它们组织到它们自己的数组或单个存储键中的对象中。如果键不是动态的,那么这种冲突不应该发生在理智的代码中,除非有人忘记了length 保留)

有关使用点符号 length 的问题示例:

localStorage.length = '123'
console.log(localStorage.length)

不会给你123,而是存储的键数。 (分配无声地失败。)另一方面,将 setItemgetItemlength (或任何其他任意字符串)一起使用将起作用。

getItemsetItem 也比点符号更兼容类型检查系统,如 TypeScript 和 Flow。

就个人而言,当我不使用 TypeScript 并且存储键是静态时,我使用点符号,因为它更简洁并且不会造成任何问题。