我正在尝试使用JavaScript在1个IF条件中使用多个OR和&子句。

但我的代码似乎无效。

这是我的代码:



localStorage.setItem('subbed', 'yes');

var isFree = '0';

if ((isFree == '0' && localStorage.getItem('subbed') == null) ||
  (isFree == '0' && localStorage.getItem('strip_subbed') == null)) {
  console.log('locked');
} else {
  console.log('not locked');
}





如果运行我的代码,它总是alert('locked')这是错误的。因为subbed localstorage是在其他所有内容之前设置的,所以它不为null。

因此,我基本上需要做的是查看IFlocalstorage subbed OR stripe_subbed is not null and isFree variable is not 0,然后解锁某些内容(在这种情况下为alert(“未锁定”))。

我希望我有道理,有人可以帮助我。

这也是一个有效的小提琴:https://jsfiddle.net/13Lbdmqr/

最佳答案

首先,您需要更改第一行

localStorage.getItem("subbed", "yes")




localStorage.setItem("subbed", "yes");


接下来,我们需要检查您的状况

如果localStorage项目subbedstrip_subbednull,则得到locked

这样的东西更是您想要的:

if(isFree === '0' && (localStorage.getItem("subbed") === null && localStorage.getItem("strip_subbed") === null)) {
    alert("locked")
}


我发现对于像这样的复合事物,最好将您的条件移动到具有好名字的变量中以使其易于推理。

var isSubbed = localStorage.getItem("subbed") !== null;
var isStripSubbed = localStorage.getItem("strip_subbed") !== null;

if(isFree !== '0' && (isSubbed || isStripSubbed)){
    alert("not locked");
} else {
    alert("locked");
}

10-02 12:21