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'