我问它,因为如果您在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