2011-08-22 31 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,所以最終答案都是正確的。