为什么 1 & 1 === 1 返回 true 而 2 & 2 === 2 返回 false?

3
在控制台中,当我输入1 & 1时,它会返回1,这就是为什么1 & 1 === 1返回true的原因。
对于2 & 2,它返回2,但2 & 2 === 2返回false
为什么呢?

console.log("1 & 1: ", 1 & 1);
console.log("1 & 1 === 1: ", 1 & 1 === 1);
console.log("2 & 2: ", 2 & 2);
console.log("2 & 2 === 2: ", 2 & 2 === 2);
console.log("typeof(2): ", typeof 2);
console.log("typeof(2 & 2): ", typeof(2 & 2));


4
它不会返回“false”,而是返回“0”。它被解释为“2 & (2 === 2)”。 “(2&2)=== 2” 是“true”。 - jonrsharpe
2
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence - Teemu
啊,是的...明白了...谢谢。 - Sw0ut
对于偶数,返回0;对于奇数,返回1。 - Negi Rox
2个回答

1
正如@jonrsharpe所说,它不返回false,而是返回0。它被计算为2 & (2 === 2)(2 & 2) === 2true
谢谢。

0
在JavaScript中,当你写2&2时,这并不意味着2 && 2,而是将2转换为32位数字并执行AND操作,与您在二进制数字中学习的相同AND操作,其中数字不会再次变成2,因此(2&2)=== 2不会返回true,因为(1&1)=== 1返回true,因为在二进制操作中,1 AND 1也返回1。

(2 & 2) === 2 返回 true。我知道这是关于二进制运算符的问题。答案在于运算符优先级。比较运算符(===)的优先级高于二进制运算符。 在分解状态下,2 & 2 === 2 被计算为 2 & true,这与 2 & 1 相同,因为当作为数字进行评估时,true被视为1。 - Sw0ut

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接