为什么括号不会在JavaScript中更改==和===的运算符优先级?

时间:2011-08-22 17:59:24

标签: javascript

我有点困惑!为什么paranthesis不会影响这些陈述中的优先级?

true === '0' == 0 // returns true
(true === '0') == 0 // returns true again!

9 个答案:

答案 0 :(得分:10)

因为true === '0'评估为falsefalse == 0为真。 (因为false和0都是“非真实的”)

请记住,===将严格的相等性和==测试与转换进行比较。

答案 1 :(得分:6)

因为(true === '0')为假,false == 0在两种情况下都为真。

换句话说:

(true === '0') == 0

解析为

false == 0

这是真的。

答案 2 :(得分:6)

并不是优先级不同,而是两个分组都评估为真:

true === '0'false
false == 0true

'0' == 0true
true === truetrue

您可能需要查看JS truth table

答案 3 :(得分:4)

因为运营商=====的{​​{3}}是从左到右关联的。这两个表达式都会导致相同的解释。请考虑以下表达式,了解结果的原因:

true === '0' // false
// so: true === '0' == 0    is  false == 0    and;
//     (true === '0') == 0  is  (false) == 0  is  false == 0  and;
false == 0   // true

快乐的编码。

答案 4 :(得分:1)

> true === '0'
  false
> false == 0
  true

答案 5 :(得分:1)

(true === '0') == 0

这个评估为:

false == 0 // which is true

答案 6 :(得分:1)

因为(true ==='0')为false而false == 0为true,在这种情况下,如果你希望它返回false将第二部分返回到===,那么JavaScript就是进行严格的类型比较

答案 7 :(得分:1)

因为true ==='0'返回false而false == 0返回true

即使有了副手,你的第一次检查总是会返回false和

false == 0 will always return true

===将检查值是否完全相同(类型为inculded)。因此,由于您将char与布尔值进行比较,结果将始终为false。

答案 8 :(得分:0)

通过使用括号,您没有更改执行顺序。即使没有括号也是从左到右。左边部分true =='0'返回0.

0 == 0返回true,因此两个时间的最终答案都是正确的。