2011-08-22 57 views

回答

6

这不是优先级是不同的,这是两个分组评价为真:

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

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

你可能想要查看JS truth table

+1

但它*是*表达*是相同的* - 并吹掉这是一个很大的疏忽。考虑添加'true ===('0'== 0)'来显示实际做某事的括号(这会产生第二种情况)。好的答案,否则。 – 2011-08-22 18:23:06

6

因为(true === '0')是假的,false == 0在这两种情况下都是这样。

换句话说:

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

解析

false == 0

这是真的。

4

由于运营商=====same precedence是从左到右关联。这两个表达式导致相同的解释。考虑以下表达式,为什么结果是它是什么:

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

快乐的编码。

1
> true === '0' 
    false 
> false == 0 
    true 
10

因为true === '0'计算结果为false,并且false == 0是真实的。 (因为false和0都是“非truthy”)

请记住,===比较严格相等和==测试是否与转换相等。

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

这一个的计算结果为:

false == 0 // which is true 
1

因为(真=== '0')为假,并且假== 0为真,并在这种情况下JavaScript是NT做了严格的类型比较,如果你希望它第二部分返回false变化===

1

因为真正===“0”返回false和虚假== 0,则返回true

即使有paranthesis,你的第一个检查总会返回false a nd

false == 0 will always return true 

===将检查值是否完全相同(类型包含)。所以,既然你把一个char和一个布尔值进行比较,结果总是是假的。

0

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

0 == 0返回true,所以最终答案都是正确的。