Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/410.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_Logical Operators - Fatal编程技术网

Javascript 如果更改顺序包含三进制运算符,为什么逻辑或工作方式不同

Javascript 如果更改顺序包含三进制运算符,为什么逻辑或工作方式不同,javascript,logical-operators,Javascript,Logical Operators,为什么下面的代码给出不同的输出 var检验; var输出=测试?'测试“:“无测试”| |正确; var output2=真| |测试?'测试“:“无测试” console.log(输出);//不测试 console.log(输出2);//测试,因为。条件运算符的优先级为4,而逻辑OR的优先级为5,因此您的代码等效于: var检验; var输出=测试?'测试':('No Test'| | true); //没有定义?”测试“:“无测试” 变量输出2=(真| |测试)?'测试“:“无测试” /

为什么下面的代码给出不同的输出

var检验;
var输出=测试?'测试“:“无测试”| |正确;
var output2=真| |测试?'测试“:“无测试”
console.log(输出);//不测试
console.log(输出2);//测试
,因为。条件运算符的优先级为4,而逻辑OR的优先级为5,因此您的代码等效于:

var检验;
var输出=测试?'测试':('No Test'| | true);
//没有定义?”测试“:“无测试”
变量输出2=(真| |测试)?'测试“:“无测试”
//“是吗?”测试“:“无测试”
控制台日志(输出);
控制台日志(output2)
在上面的代码中,您使用了
true
,这就是为什么它在这里打印了
Test
您的条件运算符为true

如果您这样尝试过,它将打印
无测试

var检验;
var输出=测试?'测试“:“无测试”| |正确;
var输出2=测试?'测试“:“无测试”
console.log(输出);//不测试
console.log(输出2);//测试
为什么工作原理相同?
var output2 = true || test ? 'Test' : 'No Test'
var output2 = test ? 'Test' : 'No Test'