Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 寻找聪明的方法重新设计此和/或声明_Javascript - Fatal编程技术网

Javascript 寻找聪明的方法重新设计此和/或声明

Javascript 寻找聪明的方法重新设计此和/或声明,javascript,Javascript,我需要重写条件的最后一部分。我需要两者和/或一起使用 if ((params.path === 'ABC' || params.path === 'EFG') && (params.noPath && params.fClick)) 像params.noPath&&&| | params.click===>在这里,我只需要一个或两个条件为真。请帮忙。谢谢 您可以用javascript模拟XOR(XOR是组合),如下所示: (params.noPath &

我需要重写条件的最后一部分。我需要两者和/或一起使用

if ((params.path === 'ABC' || params.path === 'EFG') && 
(params.noPath && params.fClick))
像params.noPath&&&| | params.click===>在这里,我只需要一个或两个条件为真。请帮忙。谢谢

您可以用javascript模拟XOR(XOR是组合),如下所示:

(params.noPath && !params.fClick) || ( !params.noPath && params.fClick)

使用三元的更小方式:

if ( params.noPath ? !params.fClick : params.fClick )

异或运算可以描述为“如果两个布尔操作数的值不相同,则返回true”

因此,适用于任何数据类型(包括表达式)的最简单、最干净的XOR运算符版本是:

if ( !params.noPath != !params.fClick )

我很确定你只需要把&&换成||

if ((params.path === 'ABC' || params.path === 'EFG') && (params.noPath || params.fClick))
因为“一个或两个”在逻辑上是相同的,至少有一个是真的

如果path为ABC或EFG且noPath为true,则上述将返回true

如果path为ABC或EFG且fClick为true,则上述将返回true

如果path为ABC或EFG且noPath和fClick为true,则上述内容将返回true


否则它将返回false

对于您已有的代码,什么不起作用?您为什么要重写它?一个或两个==
params.noPath | | params。单击
O.oI不知道在这种情况下逻辑是否正确-这种情况有效吗。然而,我现在可以阅读和理解逻辑。因此,我不确定为什么需要重新编写。
true | | true
true
,它不是独占的。为什么不干脆
params.noPath!==参数fClick
<代码>错误!==未定义的带有“!”的Cid,可用于任何数据类型,包括表达式谢谢。成功了。这是我一直在寻找的东西。@VLAZ
^
是一个按位的
XOR
,而不是布尔运算符