localStorage返回值的问题

localStorage返回值类型的问题

1. 设置过localStorage中相应的值

Web项目中使用localStorage来存储数据,并在页面中进行读取后输出,代码如下所示

1
2
let pid = localStorage.getItem("pid");
console.log("pid = "+pid);

此时输出的结果为null

在其后使用如下语句,发现此时此语句内永远不会执行

1
if(pid == null){....}

输出此时pid的类型可知LocalStorage.getItem()返回的值的类型为String

1
console.log(typeof pid)

则上述判断语句应该改为如下形式即可

1
if(pid == 'null'){...}

为了测试localStorage.getItem()的返回值类型和输入值类型是否有关,运行如下代码

1
2
3
4
localStorage.setItem("pid",1);
let pid = localStorage.getItem("pid");
console.log(typeof pid);
//结果仍然为string

经过对其他数据类型的测试,发现返回值总是传入的值转换为字符串形式之后的值。

2. 未设置过localStorage中相应的值

如果清理了浏览器的缓存或者从未使用localStorage.setItem()等设置过相应变量的值,则使用localStorage.getItem()直接获取此变量的值则会返回null,为Object类型。

1
2
console.log("pid = "+pid);
console.log(typeof pid);

3. 总结

当在localStorage中存储过相应的变量的值,如a,则之后再使用getItem("a")获取值时返回的时设置值转换为字符串的形式。如果此前没有设置a这个值,则返回的是null,为Object类型。