一.常见问题
sessionStorage.setItem("a", true);
sessionStorage.getItem("a") == true; // 结果为 false
我们存入a的值是Boolean值true
,获取a值后却不等于true
。
二.解决办法
sessionStorage.setItem("b", JSON.stringify(true));
JSON.parse(sessionStorage.getItem("b")) == true; // 结果为 true
三.原因
出现预料以外的坑,原因如下:
1.浏览器缓存会自动将数据转义string格式进行存储。sessionStorage.getItem("a") //结果为 'true'
2.js中一些反直觉判断(不理解的同学可以查看JavaScript高级程序设计第三章)
false == 'false' //false
true == 'true' //false
undefined == 'undefined' //false
null == 'null' //false
综上所述,让我们在操作浏览器数据存储时,使用JSON.stringify和JSON.parse成为习惯,避免入坑哦。