在localStorage中设置变量的正确方法是什么?
localStorage.hello = 'world'
或
localStorage.setItem('hello','world')
使用的方法不太可能重要。该标准列出了以下方法是等效的:
storage.setItem (key, value) storage[key] = value
将键对的值设置为value,如果先前没有key,则创建一个新的键/值对。
在非常不寻常的情况下,setItem
和getItem
会优先于点符号赋值或检索,这是当原型上的属性可能被引用时-例如.length
和.__proto__
。(但是动态存储键是一个非常糟糕的主意——最好将它们组织到单个存储键中自己的数组或对象中。如果键不是动态的,这样的冲突不应该在相同的代码中发生,除非有人忘记了length
是保留的)
一个使用length
和点表示法的错误示例:
localStorage.length = '123'
console.log(localStorage.length)
不会给出123
,而是存储中的键数。(赋值会无声地失败。)另一方面,将setItem
和getItem
与length
(或任何其他任意字符串)一起使用也可以。
getItem
和setItem
与类型检查系统(如TypeScript和Flow)的兼容性也比点符号更强。
就我个人而言,当我不使用TypeScript,并且当存储键是静态的时候,我使用点符号,因为它更简洁,不会引起任何问题。