我对这个全局变量有疑问。它永远不会执行If语句,即使它是真的。
HTML:
<p onclick="change(this)">Click</p>
<p onclick="change2(this)">Click</p>
JavaScript的:
var status = false;
localStorage.setItem("status", status);
function change(obj) {
var status = localStorage.getItem("status");
var status = true;
localStorage.setItem("status", status);
}
function change2(obj) {
var status = localStorage.getItem("status");
alert(status)
if (status == true) {
alert("The code works");
} else {
alert("The code doesn't work");
警报(状态)返回true,但在此之后,我得到&#34;代码不起作用&#34;。我对这个问题感到很困惑。任何帮助将不胜感激!
答案 0 :(得分:5)
localStorage.setItem("status", status);
将DOMString作为键和值添加为UTF-16字符串。
的keyName
包含您要创建/更新的密钥名称的DOMString。
的keyValue
包含您想要提供密钥的值的DOMString 创建/更新。
由于JavaScript已经使用了这样的字符串,因此直接映射DOMString 到字符串。
所以你在这里比较一个String和boolean
:
if (status == true) {
相当于:
if ("true" == true) {
在数字转换后false
与NaN
进行比较时评估为1
,true
可转换为number
。
因此,您可以比较字符串:
if (status === "true") {
答案 1 :(得分:0)
在函数中使用var status
,您将在函数中创建一个名为status
的本地范围变量,而不是修改您在文件顶部创建的全局范围变量。
只需从作业中删除var
。