“IF”中“OR”条件的正确语法是什么。

时间:2015-07-29 11:41:39

标签: javascript if-statement

有下面的if条件

if ((listbox != "lhs") || (listbox != "prevnext"))

即使列表框是“lhs”或“prevnext”字符串,这也是失败的。

甚至在语法之下尝试但是失败了

if ((listbox != "lhs" || listbox != "prevnext"))

不确定上述条件的正确语法。

3 个答案:

答案 0 :(得分:6)

if ((listbox != "lhs") || (listbox != "prevnext"))

此陈述将始终为真 - 因为列表框永远不会等同于两个值

抱歉,我可能会因为没有发布答案而让一些人感到困惑... @Light有一个解决方案(第一个片段,第二个片段显然与没有内部括号的问题相同)

有些人只需要那个facepalm时刻来实现自己的答案

我用

if ((listbox != "lhs") && (listbox != "prevnext"))

如果listbox =“fred”......

if (("fred" != "lhs") && ("fred" != "prevnext"))
           true       &&        true              result = true

如果listbox =“lhs”......

if (("lhs" != "lhs") && ("lhs" != "prevnext"))
           false     &&        true              result = false

如果listbox =“prevnext”......

if (("lhs" != "lhs") && ("lhs" != "prevnext"))
           true      &&        false             result = false

看起来对我来说

答案 1 :(得分:0)

尝试

if (!(listbox == 'lhs' || listbox == 'prevnext')) {

if (listbox   != 'lhs' || listbox != 'prevnext') {

答案 2 :(得分:0)

(listbox != "lhs" || listbox != "prevnext")

始终为真 - listbox无法同时成为lhsprevnext,因此它始终不是至少其中一个值。

(listbox == "lhs" || listbox == "prevnext")

然后:

listbox = 'lhs' // => true
listbox = 'prevnext' // => true
listbox = 'anything_else' // => false

如果listboxlhsprevnext,则为真。

(listbox != "lhs" && listbox != "prevnext")

然后:

listbox = 'lhs' // => false
listbox = 'prevnext' // => false
listbox = 'anything_else' // => true

如果listbox既不是' lhs'也不是' prevnext'则为真。

(listbox == "lhs" && listbox == "prevnext")

为了完整性 - 总是错误 - 列表框不能同时等于两个值。