Javascript “如果”中的“或”条件的正确语法是什么。?

Javascript “如果”中的“或”条件的正确语法是什么。?,javascript,if-statement,Javascript,If Statement,有如下的if条件 if ((listbox != "lhs") || (listbox != "prevnext")) 即使listbox是lhs或prevnext字符串,也会失败 甚至尝试了以下语法,但失败了 if ((listbox != "lhs" || listbox != "prevnext")) 不确定上述条件的语法是否正确 if ((listbox != "lhs") || (listbox != "prevnext")) 此语句始终为真-因为listbox永远不会同时等于这

有如下的if条件

if ((listbox != "lhs") || (listbox != "prevnext"))
即使listbox是lhs或prevnext字符串,也会失败

甚至尝试了以下语法,但失败了

if ((listbox != "lhs" || listbox != "prevnext"))
不确定上述条件的语法是否正确

if ((listbox != "lhs") || (listbox != "prevnext"))
此语句始终为真-因为listbox永远不会同时等于这两个值

对不起,我可能因为没有发布答案而混淆了一些人@Light有一个解决方案第一个片段,第二个片段显然与没有内括号的问题相同

有些人只是需要那一刻来实现自己的答案

我会用

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
我觉得不错

此语句始终为真-因为listbox永远不会同时等于这两个值

对不起,我可能因为没有发布答案而混淆了一些人@Light有一个解决方案第一个片段,第二个片段显然与没有内括号的问题相同

有些人只是需要那一刻来实现自己的答案

我会用

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
我觉得不错

试试看

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

试一试

Always true-listbox不能同时为lhs和prevnext,因此它始终不是这些值中的至少一个

(listbox == "lhs" || listbox == "prevnext")
然后:

如果listbox为lhs或prevnext,则为True

然后:

如果listbox既不是“lhs”,也不是“prevnext”,则为True

(listbox == "lhs" && listbox == "prevnext")
为了完整性-始终为false-listbox不能同时等于两个值

Always true-listbox不能同时为lhs和prevnext,因此它始终不是这些值中的至少一个

(listbox == "lhs" || listbox == "prevnext")
然后:

如果listbox为lhs或prevnext,则为True

然后:

如果listbox既不是“lhs”,也不是“prevnext”,则为True

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


为了完整性-始终为false-listbox不能同时等于两个值。

这两种语法都是正确的。可能存在逻辑错误。当listbox为lhs或prevnex时,它应该失败,只有当它是其他内容时才会触发。您应该使用==而不是!=它会起作用。@MathijsSegers实际上是&&而不是| |-但这取决于您希望true的意思是什么,您希望输入if或else的条件是什么?正如在许多答案和评论中所述,您当前的条件将始终评估为真,因为这两个条件中的一个或两个都将始终为真,它们不可能都为假。语法都是正确的。可能存在逻辑错误。当listbox为lhs或prevnex时,它应该失败,只有当它是其他内容时才会触发。您应该使用==而不是!=它会起作用。@MathijsSegers实际上是&&而不是| |-但这取决于您希望true的意思是什么,您希望输入if或else的条件是什么?正如许多答案和评论中所述,您当前的状况将始终评估为真,因为这两个状况中的一个或两个都将始终为真,它们不可能都为假。第二个与原始问题相同?第一个是right@Light...Yes,第二个不起作用,但感谢第一个,它起作用了。@KrankyCode:为了将来的参考,这就是众所周知的德莫根定理,它说!A | | B和!A&&!B还有!A&&B与相同!A | | |!因此,你想要的是!A&&!B而不是!A | | |!这一位布尔代数用于数字电子设计中,以简化电路或在逻辑高电平电路和逻辑低电平电路之间进行转换。但它在编程中经常出现,程序员也应该学会这一点。@slebetman谢谢你对定理的详细解释,我很久以前就学会了…@Rakeshasadhula:是的,但你已经忘记了:否则你就不会奇怪为什么你的if语句不起作用了第二个与原始问题相同?第一个是right@Light...Yes,第二个不起作用,但感谢第一个,它起作用了。@KrankyCode:为了将来的参考,这就是众所周知的德莫根定理,它说!A | | B和!A&&!B还有!A&&B与相同!A | | |!因此,你想要的是!A&&!B而不是!A | | |!这一位布尔代数用于数字电子设计中,以简化电路或在逻辑高电平电路和逻辑低电平电路之间进行转换。但它在编程中经常出现,程序员也应该学习它。@slebetman感谢您对定理的详细解释,我很久以前就学会了…@Rakeshasadhula:是的,但是你已经忘记了:否则你就不会奇怪为什么你的if语句不起作用了我不确定这个答案的波动性是什么-它没有错。@Jaromanda。。。这对我的需求不起作用,因为我不希望代码在任何条件下执行,例如listbox==lhs或listbox==prevnext。。。所以&&不会work@KrankyCode - !a | | b==!a&&!检查我的编辑,以证明它是有效的-甚至是制作的
一把小提琴来证明它-@JaromandaX如果['lhs','prevenxt'],我更喜欢它。indexOflistbox<0{…我不确定这个答案的波动性是什么-它没有错。@Jaromanda…这对我的要求不起作用,因为我不希望代码在任何条件下执行,即如果listbox==lhs或listbox==prevnext…那么&&不会work@KrankyCode-!a | | b==!a&&!b-检查我的编辑是否有效-甚至做了一把小提琴为了证明它-@JaromandaX我更喜欢if['lhs','prevnext'].indexOflistbox<0{。。。