今天遇到一个问题,其他的页面查询接口返回的一个参数,bool值,用来判断当前用户是否能购买特定商品,最开始想到的是,吧其他的页面接口返回的数据放到本地存储中去,在另外一个页面拿出来进行判断,决定前端是否能够购买的交互逻辑。
在存储好之后,在读取的时候,发现了bool变成了字符串类型,所以使用

if(localStorage.getItem('isTrue')){}

这种方法判断,从本地存储读取出来的数据是字符串类型的 true/false,所以,不论true/false都是true ,显然不能用这种方法。(pc端)但是我使用uniapp,使用uni.setStorageSync()和uni.getStorageSync()在h5上试了一下,返回的bool值。
对于pc端,解决的办法是使用:eval()

 var isTrue = false;localStorage.setItem('isTrue',isTrue)console.log(localStorage.getItem('isTrue'))console.log(typeof localStorage.getItem('isTrue'))//stringconsole.log(typeof eval(localStorage.getItem('isTrue')))//boolean`

当然最后我还是没有使用locaStorage方式来存储bool值,因为这个值相对来说是敏感值,不可以直接放到本地存储中,很容易被懂技术的人员,在本地存储中修改这个值,从而造成安全隐患。
下面是我写的demo:

  <button>购买</button>var btnDom = document.getElementsByTagName('button')[0]
var isTrue = false;
localStorage.setItem('isTrue',isTrue)
var isShow = eval(localStorage.getItem('isTrue'))//写在这里,页面只加载一次,再次修改本地存储值,不会影响已经执行过的代码全局变量值
btnDom.addEventListener('click',function(e){// var isShow = eval(localStorage.getItem('isTrue'))//这里做判断在手动被别人修改本地存储值后,会影响下面程序的执行,弹出可以购买if(isShow){alert('可以购买')}else{alert('不能购买')}
})

eval():
eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码。
eval()函数可以把字符串当做一个语句去执行,这样有一个弊端:比如:字符串中含有删除文件的语句。那就危险了,所以使用要谨慎。
localStorage局限性

1、浏览器的大小不统一,并且在 IE8 以上的 IE 版本才支持 localStorage 这个属性。
2、目前所有的浏览器中都会把localStorage的值类型限定为string类型,这个在对我们日常比较常见的JSON对象类型需要一些转换。
3、localStorage在浏览器的隐私模式下面是不可读取的。
4、localStorage本质上是对字符串的读取,如果存储内容多的话会消耗内存空间,会导致页面变卡。
5、localStorage不能被爬虫抓取到。
localStorage 与 sessionStorage 的唯一一点区别就是 localStorage 属于永久性存储,而 sessionStorage 属于当会话结束的时候,sessionStorage 中的键值对会被清空。
6、存储过多数据会导致页面变卡,因为localStorage的本质是对字符串的读取
7、不要存储敏感信息
tips
不同浏览器无法共享localStorage,相同浏览器的不同页面间可以共享相同的 localStorage(页面属于相同域名和端口),但是不同页面或标签页间无法共享sessionStorage的信息。这里需要注意的是,页面及标 签页仅指顶级窗口,如果一个标签页包含多个iframe标签且他们属于同源页面,那么他们之间是可以共享sessionStorage的。

localStorage存储bool值,读取之后变字符串类型相关推荐

  1. localStorage存储数据的格式

    1. localStorage 是以字符串的形式来存储的 //存:转为字符串let obj = {"name":"Lee","age":&q ...

  2. php布尔类型转为字符串,php将布尔值类型转为了字符串类型,比如传入isAnalog:true,处理后isAnalog:true...

    传入参数:{"cpid":"111","ipid":0,"pointType":1,"isAnalog&quo ...

  3. Redis数据类型--字符串类型

    夫陶公清风千古,余又何人,敢称庶几 文章目录 介绍 一.基本命令 1. 赋值与取值 2. 递增数字 二.命令进阶 1. 增加指定的整数 2. 减少指定的整数 3. 增加指定浮点数 4. 向尾部追加值 ...

  4. 请实现一个算法,确定一个字符串的所有字符是否全都不同。这里我们要求不允许使用额外的存储结构。 给定一个string iniString,请返回一个bool值,True代表所有字符全都不同,False代

    请实现一个算法,确定一个字符串的所有字符是否全都不同.这里我们要求不允许使用额外的存储结构. 给定一个string iniString,请返回一个bool值,True代表所有字符全都不同,False代 ...

  5. Android本地存储键值对,flutter本地存储键值对简单数据(相当于web的localstorage) 代码实现...

    flutter中存储键值对简单数据(相当于前端localstorage概念) 首先需要安装一个官方推荐包: 1 dependencies: 2 flutter: 3 sdk: flutter 4 sh ...

  6. vue保存页面的值_vue中使用localStorage存储信息

    一 什么是localStorage 对浏览器来说,使用 Web Storage 存储键值对比存储 Cookie 方式更直观,而且容量更大,它包含两种:localStorage 和 sessionSto ...

  7. scala函数式变程,curry,读取文件,字符串插值,隐式转换,模式匹配

    文章目录 scala函数式变程 scala读取文件 字符串插值 scala隐式转换 模式匹配,偏函数,try catch scala函数式变程 object AdFunctionApp {def ma ...

  8. 使用localStorage存储数据每次调用setItem()它都会添加或覆盖现有值

    JSON.stringify()的作用是将 JavaScript 对象转换为 JSON 字符串,而JSON.parse()可以将JSON字符串转为一个对象. 简单点说,它们的作用是相对的,我用JSON ...

  9. python基础入门--input标签、变量、数字类型、列表、字符串、字典、索引值、bool值、占位符格式输出...

    # 在python3 中: # nian=input('>>:') #请输入什么类型的值,都成字符串类型# print(type(nian)) # a = 2**64# print(typ ...

最新文章

  1. STM32中EXTI和NVIC的关系
  2. Hibernate JPA中@Transient、@JsonIgnoreProperties、@JsonIgnore、@JsonFormat、@JsonSerialize等注解解释
  3. java判断日期是否是同一周_JAVA里面怎样判断一个日期是否是星期六或者星期天,给出原代码,多谢!!!!!!!!!!...
  4. spin协议 matlab 仿真,无线传感器总结复习资料02016学生
  5. ORB_SLAM2中的疑难杂症
  6. linux 查看文件开头几行、末尾几行、中间几行
  7. linux宽松模式,三星N9200刷机包 V35.0 自编译官方内核 Selinux置为宽松模式 修复问题 稳定流畅...
  8. OTDR常见测试曲线​
  9. c语言考试程序设计题怎么给分,计算机程序设计C语言考试试卷及评分标准.doc
  10. win10企业版 网络图标消失 解决办法
  11. 度量衡计算工具_度量衡计量单位换算转换器
  12. openwrt开启wifi功能
  13. 华硕路由器官改/梅林 设置外置USB-JFFS解救NAND
  14. 基于阿里云的安全组介绍
  15. 部分一二线城市的建筑物矢量图
  16. 性能测试和优化实录(mybatisplus异步写库@Async引起的对象无法释放问题)
  17. 产品:“嘘,这事千万别让开发知道”
  18. Linux系统日志查询
  19. C语言中百分之5d是什么意思
  20. (三)Kotlin加密/解密之AES和DES

热门文章

  1. 2013届毕业生 沈阳找工作总结
  2. VHDL实现智能药盒
  3. SAP-HR模块-常用T-CODE
  4. 《从你的全世界路过》之稻城
  5. 计算机机房的监控,机房动环监控解决方案
  6. 怎么把1g的视频压缩到500m?
  7. ubuntu 压缩率最高的软件_可能是目前最好用的免费压缩软件
  8. 清华集训2017题解
  9. Email和电子邮箱一样吗?
  10. DNA与剑桥的老鹰酒吧