我不明白为什么只有num1才应该输出输出。我在这里想念什么吗?
var num1 = 0x200127;
var num2 = 0x200124;
if(num1 & 0x100 == 0x100){
console.log("num1: " + (num1 & 0x100 ) );
}
if(num2 & 0x100 == 0x100){
console.log("num2: " + (num2 & 0x100 ) );
}
这是操作顺序的问题。作为参考,请检查JavaScript运算符Priority表。
==
的精度为10,而&
精度为9,因此需要==
首先进行评估。
因此,您的代码本质上是在评估:
num & (0x100 == 0x100)
等效于:
num & true
num1
输出,而num2
不是不是因为:
0x200127 & true == 1 (true)
0x200124 & true == 0 (false)
尝试将按位运算放在括号中,因为分组运算符的优先级最高。
if((num1 & 0x100) == 0x100){
console.log("num1: " + (num1 & 0x100 ) );
}
if((num2 & 0x100) == 0x100){
console.log("num2: " + (num2 & 0x100 ) );
}
在下面测试:
var num1 = 0x200127,
num2 = 0x200124,
output = document.getElementById('output');
if ((num1 & 0x100) == 0x100) {
output.innerHTML += "<p>num1: " + (num1 & 0x100) + "</p>";
}
if ((num2 & 0x100) == 0x100) {
output.innerHTML += "<p>num2: " + (num2 & 0x100) + "</p>";
}
<div id="output"></div>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句