我有点困惑!为什么paranthesis不会影响这些陈述中的优先级?
true === '0' == 0 // returns true
(true === '0') == 0 // returns true again!
答案 0 :(得分:10)
因为true === '0'
评估为false
,false == 0
为真。 (因为false
和0都是“非真实的”)
请记住,===
将严格的相等性和==
测试与转换进行比较。
答案 1 :(得分:6)
因为(true === '0')
为假,false == 0
在两种情况下都为真。
换句话说:
(true === '0') == 0
解析为
false == 0
这是真的。
答案 2 :(得分:6)
并不是优先级不同,而是两个分组都评估为真:
true === '0'
是false
false == 0
为true
'0' == 0
是true
true === true
为true
您可能需要查看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,因此两个时间的最终答案都是正确的。