为什么"false | true"是1,但在Javascript中不是真的?



我问它,因为如果您在Java中尝试它:

boolean a = true, b = false;
boolean c = a | b;

然后,在c中,变量将为true值。但是,如果我们在JS中运行类似的代码:

var a = false, b = true;
var c = a | b;

然后在c中,变量将为1值。如何解释这种奇怪的行为?

|是位运算符。当您写" false |true"然后将其像0 |1。

对待

来自MDN:

对每对位执行或操作。a或b会产生1 A或B是1。或操作的真实表是:

a   b   a OR b
0   0   0
0   1   1
1   0   1
1   1   1

Grijesh也正确评论了Java boolean c = 1中给出了True,而在JavaScript var c = 1中,由于类型转换,给出了1个。隐式类型转换发生在Java中,但在JavaScript中不发生。

这是一篇很好的文章:关于JavaScript中的所有类型 - 自动类型转换

与Java不同,JavaScript中的逻辑运算符在任何类型上工作。 ,与Java不同,它们不会返回布尔值。仍然期望布尔值,如果没有给出两个操作数,则转换了两个操作数 到布尔。

||表示或返回 true

true || false; // true
false || true; // true

|实际上是一个位于比特的操作员,可以像0|1一样解释它并返回数字1,因为位的操作员只能在数字上工作。

false | true; // 1
0 | 1;        // 1
true | false; // 1
1 | 0;        // 1

相关内容

最新更新