在localStorage存入里面的数据是字符串,如果你存入了一个值是Boolean类型的,
那你你取出来就是一个字符串 'true' 或者 'false'
假设取出来的值是 'true'
在你进行if(){}判断的时候,
成立的条件是 xxx== 'true'
如果你这样写 xxx == true 是不成立的,是不会执行里面的语句的
有人说:
因为localStorage存入的是字符串,那么你取出来的时候,也是字符串;
所以成立的条件是 xxx== 'true'
那么:我想问的是
true=='true' 这个等式成立吗;
知悉想一想;可以先不着急回答这个问题;
<script>
let flag = true;
localStorage.setItem('keyname', flag)
let local_cont = localStorage.getItem("keyname");
console.log(typeof local_cont); //输出string; 返回来的类型是字符串'true'
// 这样才是正确的(能够进入if里面的鱼护)
if (local_cont == 'true') {
console.log('成立的1 ')
}
// 这样是不会执行的
if (local_cont == true) {
console.log('不成立的2')
}
// 这样也是不会执行的
if (local_cont === true) {
console.log('不成立的了3')
}
// 不成的(布尔类型的true 不等于 字符串‘true’)
if (true == 'true') {
console.log('不成立哈 ')
}
</script>
所以在我们将布尔值 存入localStorage的时候;
我么需要需要注意的是
成立的条件是 xxx=='true' 或者是 xxx='false'
千万不可以写成 xxx==true 或者是 xxx=false 因为这个等式不不成立的