Javascript:localStorage 使 if 语句瘫痪?

Javascript: localStorage paralyzes if-statements?

制作了一个布尔变量“disableReplaceDate”,用于 if 语句。必须以某种方式保存变量,因为页面会重新加载,我需要将它用于 "check a status" 之类的,所以它不会 return 每次页面重新加载时默认。

然后,为了节省我自己很多时间和麻烦,因为我不能将它们作为参数发送到 URL 中(它已经被一个复杂的 java 文件占用了,它操纵了这一切而且我根本不擅长 java),我决定使用 window.localStorage setItem、getItem 和 removeItem 等,所以基本上

 var disableReplaceDate = false;
 window.localStorage.setItem("dRD", false);
 disableReplaceDate = window.localStorage.getItem("dRD");

但现在是 if 语句,如下所示:

 if(disableReplaceDate == true){/*do some stuff*/}

没有用了!但是当我把它改成

 if(disableReplaceDate){/*do some stuff*/}

它突然开始工作。

如果这还不够离奇的话,它不会对所有使用变量的 if 语句执行此操作,我尝试将它们更改为 (!disableReplaceDate) 等,但这并不能使它们起作用。

这是为什么?我该如何解决?

localStorage 只存储字符串。 "false" 在需要布尔值的上下文中计算为 true(例如 if 语句)。

你应该改变

disableReplaceDate = window.localStorage.getItem("dRD");

disableReplaceDate = window.localStorage.getItem("dRD") === "true";

我想是因为你的变量类型是 "string" 看这个

typeof(disableReplaceDate) 

输出将是string

我认为你需要这样测试if(disableReplaceDate === "false")