问题 是否可以像在Javascript对象中一样在localStorage中存储整数值并在没有类型转换的情况下提取它?


当我将整数值分配给localStorage项目时

localStorage.setItem('a',1)

并检查其类型

typeof(localStorage.a)
"string"

它返回 ,我可以把它强制转换 INT 供我使用

parseInt(localStorage.a)

我的问题是可以在localStorage中存储整数值,因为我可以为没有类型转换的Javascript对象做什么?

a={};
a.number=1;
typeof(a.number)
"number"

2842
2017-11-27 07:29


起源

LocalStorage只能存储字符串值。 - Tholle
这不是类型转换,而是转换。 JavaScript没有类型转换(因为JavaScript没有类型变量)。 - T.J. Crowder


答案:


我的问题是可以在localStorage中存储整数值,因为我可以为没有类型转换的Javascript对象做什么?

没有。

存储对象是简单的键值存储,类似于对象,但它们通过页面加载保持不变。键可以是字符串或整数, 但值始终是字符串[资源]


11
2017-11-27 07:33



这意味着每次我需要对它进行数学计算? - nickalchemist
是的(假设你不能对字符串本身进行计算,你可能不能,甚至更不可能)。 - Adam Zerner


实际上你可以,如果我们同意解析与类型转换不同:

let val = 42;
localStorage.answer = JSON.stringify(val);
let saved = JSON.parse(localStorage.answer);
console.log( saved === val ); // true

小提琴 因为过度保护的stacksnippets不允许localStorage。

为简单起见,无论如何,你应该总是将你在localStorage中保存的内容字符串化为JSON,这样你就不必考虑保存/检索的内容了,你会避免 "[object Object]" 被救了


4
2018-05-01 10:00