在javascript中,我是否正确使用了逻辑运算符或(| |)?

在javascript中,我是否正确使用了逻辑运算符或(| |)?,javascript,operator-keyword,logical-operators,Javascript,Operator Keyword,Logical Operators,如果键入的_边具有值, 将显示警报(“是”) 是不是不应该展示 我想要的是,当键入的_edge具有值“非此即彼”或“可行走”时,不会显示警报。但事实似乎并非如此 试试这个: if ((typed_edge!='Either') || (typed_edge!='Walkable')){ alert("YES"); alert("type_edge"+ typed_edge + bus_stops_visited[$k]+ " " +bus_stops_visited[$k+1])

如果键入的_边具有值, 将显示警报(“是”)

是不是不应该展示

我想要的是,当键入的_edge具有值“非此即彼”或“可行走”时,不会显示警报。但事实似乎并非如此

试试这个:

if ((typed_edge!='Either') || (typed_edge!='Walkable')){
    alert("YES");
    alert("type_edge"+ typed_edge + bus_stops_visited[$k]+ " " +bus_stops_visited[$k+1]);
    }
编辑:遗漏了问题中的“否”

if (typed_edge !== 'Either' && typed_edge !== 'Walkable'){
    alert("YES");
    alert("type_edge"+ typed_edge + bus_stops_visited[$k]+ " " +bus_stops_visited[$k+1]);
}

你应该把一个条件变成一个句子,这样更容易构建。这样,您只需将语法替换为所需的语法。

按照上面的方式,您需要:

if (typed_edge==='Either' || typed_edge==='Walkable'){
    alert("YES");
    alert("type_edge"+ typed_edge + bus_stops_visited[$k]+ " " +bus_stops_visited[$k+1]);
}
按照你现在的方式,上面写着:

如果不是的话

如果它不能行走

这意味着如果它是“可行走的”,那么第一个条件的计算结果为“true”

这意味着警报将发出


相反,如果它是“要么”,那么第二个条件将是“true”,它将触发。

如果正确使用
|
条件,但是如果在
if()
语句中使用
不等于
,请尝试以下操作:

if('Either' !== typed_edge && 'Walkable' !== typed_edge) {
 // this means - it is NOT both of them
}

也许可以尝试另一种方法。将您的白名单/黑名单值加载到数组中,并检查是否找到任何值

if ((typed_edge=='Either') || (typed_edge=='Walkable')){
    alert("YES");
    alert("type_edge"+ typed_edge + bus_stops_visited[$k]+ " " +bus_stops_visited[$k+1]);
}

在该示例中保证会调用它,因为
typed_edge
总是与这些字符串中的一个不同,因为它不能同时匹配两个字符串。+1@jens.bhurtah:您描述的更直译是
!(…==…|…==…)
,这可能更容易理解。+1。你是唯一一个(到目前为止)似乎理解问题意图的人(除了MattP,但他删除了他的答案)。我需要尽快回答另一个问题-不能在666上停留太久。。。我认为海报对语法不是很确定,但看起来其余的都理解了。这与@jens.bhurtah要求的相反:他希望如果与这些字符串中的任何一个匹配,则不会显示警报。这与问题中的代码相同(除了使用
!==
而不是
!=
),因此没有达到预期的效果。对不起。。我没有测试就发布了代码。现在它是有意义的-如果文本不是其中之一,并且文本不可行走
if(["Either","Walkable"].indexOf(typed_edge) > -1)
{
    alert('got either or walkable here');
}