0 === (0 || 6) // returns false
false === (false || 6) // returns false
(false === false || false === 6) // returns true
(0 === 0 || 0 === 6) // returns true
console.log( 0 === (0 || 6) );
console.log( false === (false || 6) );
console.log( (false === false || false === 6) );
console.log( (0 === 0 || 0 === 6) );
给什么?我之前遇到过这种情况,但并没有理解。
答案 0 :(得分:1)
0 === (0 || 6) // returns false
这与操作顺序有关。因为返回括号是第一个,所以返回false。因此(0 || 6)
返回6,而0 === 6
是false
false === (false || 6) // returns false
(false === false || false === 6) // returns true
(0 === 0 || 0 === 6) // returns true
在进行了解释之后,其余的内容很容易理解。
答案 1 :(得分:1)
0 === (0 || 6)
等效于0 === 6
,这当然是错误的。
false === (false || 6)
等效于false === 6
,这显然也是错误的。
(false === false || false === 6)
等同于true || false
,这当然是正确的。
(0 === 0 || 0 === 6)
也等同于true || false
。
查找“运算符优先级”。将来,这将帮助您全神贯注地使用javascript。
答案 2 :(得分:0)
首先,您应该知道操作员的优先级。
第二,您应该知道操作员如何工作以及他们返回什么。
Here is the documentation you can take it as reference。
console.log( 0 === (0 || 6) );
// (0 || 6) returns 6 because 0 is falsy,
// so it becomes 0 === 6. It is obviously return false.
console.log( false === (false || 6) );
(false || 6) is equals (0 || 6), so we get (false === 6) = false.
console.log( (false === false || false === 6) );
// this is three part. === is prior to ||,
// so we should do (false === false) and (false === 6).
// (false === false) is true and (false === 6) is false,
// so we get (true || false) = true
console.log( (0 === 0 || 0 === 6) );
// (0 === 0) is true and (0 === 6) is false,
// so true || false is true.
顺便说一下,大多数JavaScript运算符都会进行类型转换 双方是否不是操作员想要的类型。 您可以看一下以下内容:
答案 3 :(得分:0)
根据您的问题,我想您对AND
和OR
的使用或工作方式并不熟悉。
所以
|
代表按位OR
并且&
代表按位AND
这是将AND
写为&&
并将OR
写为||
的常见方法。
对于AND
,以下情况是
1 && 1 => 1
1 && 0 => 0
0 && 1 => 0
0 && 0 => 0
对于OR
,以下情况是
1 || 1 => 1
1 || 0 => 1
0 || 1 => 1
0 || 0 => 0
在上面,1
可以是任何非零的整数或值(但我们用1表示它,表示高)。
所以,如果你写,
0 === ( 0 || 6 )
,
然后,( 0 || 6 )
已经是true
,那么,如果将true
与0
进行比较,则它总是错误的。
如果您将上述条件更改为:
0 == ( 0 && 6 )
,(已编辑)
( 0 && 6 )
变为false,然后0 == false
变为true
。
===
和==
是不同的,因为第二个仅检查它们是否相等,但不检查它们是否完全相同。 ===
检查值是否相同,即完全相同。
我希望我的回答会有所帮助。