前端系列——window.localStorage空值判断问题(这真的是一个值得深思的问题)

28 篇文章 10 订阅
17 篇文章 7 订阅

前言

我们都知道window.localStorage是用于查看你浏览器的本地存储的
在这里插入图片描述

我们可以根据本地存储进行判断用户状态等一系列的事件

问题描述

今天在写的时候我对localStorage里的token进行空值判断来判断用户状态以渲染用户头像
发现使用(window.localStorage.getItem('token') != ‘’来判断的话无法正确判断token是否为空,必须使用(window.localStorage.getItem('token') != null进行判断
虽然我写错后一下子就知道问题在哪但还是写本文记录一下

问题原因分析

先看输出

在这里插入图片描述

在这里插入图片描述
对应输出你可以看到:
token确实是null
但是 !=null 和 !=’’ 判断的并不同,按照token是否存在来说是!=null判断正确
哪为什么空字符串就判断错误呢?

原因

道理很简单因为字符串为空时empty string
在这里插入图片描述

前端中空字符串和null并不相同
当我伪造一个空token时
在这里插入图片描述
前端输出确实是empty string

根本原因

null和空,垃圾回收机制
垃圾回收看这篇:https://zhuanlan.zhihu.com/p/23992332

总结

前端的null和空字符串并不划上等号
null表示一种状态,是无
空字符串则是一种值,是空

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值