true=='true'这个等式成立吗?

在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  因为这个等式不不成立的

posted @ 2020-11-06 20:58  南风晚来晚相识  阅读(271)  评论(0)    收藏  举报