这是我的代码:
sessionStorage.loggedIn = true;
if (sessionStorage.loggedIn) {
alert('true');
}
else {
alert('false');
}
够简单的。关于 JavaScript 如何评估这些表达式,肯定有一些小问题我不明白。当我把sessionStorage.loggedIn = false
,“假”警报正确显示。然而,当我改变sessionStorage.loggedIn
设置为 true 时,即使清除会话后,“假”警报仍然会弹出。我这个表达哪里不对劲?看起来很简单,也许我只是需要另一双眼睛来关注它。
尝试将您的代码更改为
sessionStorage.setItem('loggedIn',JSON.stringify(true));
if (JSON.parse(sessionStorage.getItem('loggedIn'))) {
alert('true');
}
else {
alert('false');
}
并且它应该在所有主要浏览器上一致地工作。
接口与setItem
/getItem
方法是规范的编写方式,因此采用这种方式比使用分配属性的快捷方式更安全。还,sessionStorage
, like localStorage
是一种基于文本的存储机制,并不用于存储对象,因此您需要使用以下方式包装调用JSON.parse
and JSON.stringify
全面获得预期结果。
意识到JSON.parse
并不总是能很好地处理未定义/空值,因此首先进行一些类型检查可能是明智的。
您可以在此处阅读存储接口的规格 http://www.w3.org/TR/2013/REC-webstorage-20130730/#storage-0
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)