![](/img/trans.png)
[英]Why this If statement with OR operation doesn't work in JavaScript?
[英]Why doesn't bitwise xor work in an if statement of JavaScript?
有人可以解释这种行为吗?
https://jsfiddle.net/td1qtyxL/9/
function checkSignsWeird(a,b){
var output = "";
if(a^b < 0){
output = "The "+a+" and "+b+" have DIFFERENT signs.";
}else{
output = "The "+a+" and "+b+" have the SAME sign.";
}
console.log(output);
}
基本上,除非a^b
存储在变量中(或用括号括起来),否则它将不起作用。
checkSignsWeird(-50,40);
checkSignsWeird(60,70);
两者产生相同的结果。
艾米,我做错了还是这是个错误? 在if子句中或在其他子句中时,按位运算是否会有所不同? 我不经常使用按位运算,只是觉得这很优雅,所以从这里得到一个答案: 检查两个整数是否具有相同的符号
“小于”(<)的优先级高于按位异或(^): https : //developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Operator_Precedence#Table
您需要用括号将操作分组。
按位运算符的优先级低于比较运算符。 请参阅运算符优先级 。
话虽这么说,不要写聪明的代码。
function haveSameSign(a, b) {
return (a >= 0 && b >= 0) || (a < 0 && b < 0);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.