localStorage返回值类型的问题
1. 设置过localStorage中相应的值
在Web
项目中使用localStorage
来存储数据,并在页面中进行读取后输出,代码如下所示
1 | let pid = localStorage.getItem("pid"); |
此时输出的结果为null
在其后使用如下语句,发现此时此语句内永远不会执行
1 | if(pid == null){....} |
输出此时pid
的类型可知LocalStorage.getItem()
返回的值的类型为String
1 | console.log(typeof pid) |
则上述判断语句应该改为如下形式即可
1 | if(pid == 'null'){...} |
为了测试localStorage.getItem()
的返回值类型和输入值类型是否有关,运行如下代码
1 | localStorage.setItem("pid",1); |
经过对其他数据类型的测试,发现返回值总是传入的值转换为字符串形式之后的值。
2. 未设置过localStorage中相应的值
如果清理了浏览器的缓存或者从未使用localStorage.setItem()
等设置过相应变量的值,则使用localStorage.getItem()
直接获取此变量的值则会返回null
,为Object
类型。
1 | console.log("pid = "+pid); |
3. 总结
当在localStorage
中存储过相应的变量的值,如a
,则之后再使用getItem("a")
获取值时返回的时设置值转换为字符串的形式。如果此前没有设置a
这个值,则返回的是null
,为Object
类型。