前言
我们都知道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表示一种状态,是无
空字符串则是一种值,是空