我正在尝试使用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。因此,我基本上需要做的是查看
IF
和localstorage 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项目
subbed
或strip_subbed
是null
,则得到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");
}