Javascript js0==(0 | | 6);返回false-为什么?

Javascript js0==(0 | | 6);返回false-为什么?,javascript,conditional,equality,conditional-operator,Javascript,Conditional,Equality,Conditional Operator,console.log(0==(0 | | 6)); console.log(false==(false | 6)); log((false==false | | false==6)); log((0==0 | | 0==6)) 这都是关于操作顺序的。返回false,因为首先计算括号。因此(0 | | 6)返回6并且0==6为false 0 === (0 || 6) // returns false 其他的解释很容易理解。0==(0 | | 6)等同于0==6,这当然是错误的 false==(

console.log(0==(0 | | 6));
console.log(false==(false | 6));
log((false==false | | false==6));
log((0==0 | | 0==6))
这都是关于操作顺序的。返回false,因为首先计算括号。因此
(0 | | 6)
返回6并且
0==6
false

0 === (0 || 6) // returns false
其他的解释很容易理解。

0==(0 | | 6)
等同于
0==6
,这当然是错误的

false==(false | | 6)
相当于
false==6
,后者显然也是false

(false==false | | false==6)
等同于
true | | false
,这当然是真的

(0==0 | | 0==6)
也相当于
true | | false


查找“运算符优先级”。这将有助于您在将来了解javascript。

首先,您应该知道操作员的优先级

其次,您应该知道操作符是如何工作的,以及它们返回的内容

console.log(0==(0 | | 6));
//(0 | | 6)返回6,因为0是falsy,
//所以它变成了0==6。这显然是错误的。
console.log(false==(false | 6));
(false | | 6)等于(0 | | 6),所以我们得到(false==6)=false。
log((false==false | | false==6));
//这是三部分在| |之前,
//所以我们应该做(false==false)和(false==6)。
//(false===false)为真且(false==6)为假,
//所以我们得到(真| |假)=真
log((0==0 | | 0==6));
//(0==0)为真,(0==6)为假,

//所以真| |假是真。
从你的问题来看,我猜你不熟悉
&
是如何使用或工作的

所以

|
表示按位

和,
&
表示按位

这是将
写成
&&
写成
|
的常用方法

对于
,以下是场景:

false === (false || 6) // returns false

(false === false || false === 6) // returns true

(0 === 0 || 0 === 6) // returns true
 1 && 1 => 1
 1 && 0 => 0
 0 && 1 => 0
 0 && 0 => 0
对于
,以下是场景:

false === (false || 6) // returns false

(false === false || false === 6) // returns true

(0 === 0 || 0 === 6) // returns true
 1 && 1 => 1
 1 && 0 => 0
 0 && 1 => 0
 0 && 0 => 0
在上面的例子中,
1
可以是任何非零整数或值(但我们用1表示它,意思是

所以,如果你写

0==(0 | 6)

然后,
(0 | | 6)
已经是
true
,然后,如果将
true
0
进行比较,那么它总是会是false

鉴于,如果您将上述条件更改为:

0==(0&&6)
,(编辑的

(0&&6)
变为false,然后
0==false
变为
true

=
=
是不同的,因为第二个只检查它们是否相等,但不检查它们是否完全相同<代码>=
检查值是否相同,即完全相同


我希望我的回答是有帮助的。

“(0==0 | | 0==6)
返回true”。你到底期望什么?
(0 | | 6)
的计算结果是
6
。同样地,
0==6
当然会返回
false
。如果您真的感到困惑,需要额外澄清,
(0 | 6)==6
,因为0是错误的。所以在这种情况下,(0 | | 6)在逻辑上等同于(false | | true)。@lukeic也许我没有听你的解释,但是
(0 | | 6)
并不等同于
(false | true)
。第一个返回
6
,第二个返回
true
<代码>6!==true
@TylerRoper Type-wise yes,
6
是一个数字,
true
是一个布尔值,因此
6!==正确
。然而,我想说的是,当把
(0 | 6)
看作一个逻辑语句时,也就是说,如果0是真的,那么这个语句就是真的。或者,如果6为真,则该语句为真–将其视为
(false | true)
语句可能会有所帮助,因为
0
被视为假,而6则不是。
0==false
变为
true
?你在说什么?@Terrywe谢谢你指出我的错误,我已经更新了我的答案,请检查我的答案中是否还有其他愚蠢的错误。谢谢