Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.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,比如说 var reason = None; if (a == 1 || b == 1) { x = True; } /*some code where x became True................*/ /*here I need to assign the "reason" variable with a or b value*/ 如果有一次x等于真。如何找出为什么x变为真?因为a=1还是因为b=1? 原因是什么?原因在“a”或“b”中?我需要将

比如说

var reason = None;

if (a == 1 || b == 1) {
    x = True;
}

/*some code where x became True................*/
/*here I need to assign the "reason" variable with a or b value*/
如果有一次x等于真。如何找出为什么x变为真?因为a=1还是因为b=1? 原因是什么?原因在“a”或“b”中?我需要将“reason”变量赋值为a或b


如何用最少的代码做到这一点?(最简单的实现)

我认为问题是试图区分析取的哪个部分产生了它的真值

(a==1 | | b==1)
可能是真的,原因有三个(这正是您测试每一个的方式):

用操作码来说

函数为什么(a,b){
设x=false
让理由='a和b都不是1'
如果(a==1 | | b==1){
x=真;
如果(a==1&&b==1)原因='因为a和b都是1'
else如果(a==1)原因='因为只有a是1'
else reason='因为只有b是1'
}
返回{x,原因}
}
console.log(为什么(0,0))
console.log(为什么(0,1))
console.log(为什么(1,0))

log(为什么(1,1))
您不能为a和b分别使用两个if语句。JavaScript中没有
None
关键字,仅供参考。还要回答您的问题:
var reason=1
不管“原因”是什么,您感兴趣的变量的值都是
1
。您确定这不是Python的问题吗?
a === 1
// one, or
b === 1
// the other, or
a === 1 && b === 1
// both