2014-01-07 55 views
1

當一個字符串只包含空白字符(例如:空格,製表符,換行符字符)時,x == !x返回true當x ==!x在javascript中返回true時的情況

實施例:

"\t\n\r" == !"\t\n\r" // true 

這是因爲當與==比較,字符串僅空白字符被轉換爲0, 但對於!"\t\n\r"被認爲是作爲一個非空字符串,所以!"\t\n\r"false0 == false返回true。

問題是,這是唯一的情況下(字符串只有空字符)當x == !x返回true? 還有其他的例子嗎?


通過@Ted霍普的回答啓發:

每串,除了空字符串""可能轉換爲0使x == !x看臺。

實施例:

"0.0" == !"0.0" 
"608E-4234" == !"608E-4234" 
+0

'[ 「」] ==!( 「」); // true!''將truthy Array對象轉換爲'false',第一個'[「]]'將被轉換爲字符串'」「',並且'」== false'通過「true」最終的數字轉換。 –

+0

同樣可以使用'[0] ==![0]' –

+0

或者這個:'[[]] ==![[]]'無論嵌套深度如何,只要'.toString() '左邊陣列的結果是一個最終將被轉換爲0的值。[[[[[0]]]] ==![[[[[0]]]]' –

回答

4

這也是true

"0" == !"0" 

其他情況將類似於—當強制轉換爲一個int將爲x == !x工作的計算結果爲0的任何非空字符串。

+0

是的,每個字符串除了空字符串'「」''可以轉換爲'0'。 – xdazz

+0

@xdazz - 對。我看到你添加了一些有趣的例子。 –

0

也是如此

" " == !" " 

即使" "可強制轉換爲0

+0

這是OP最初提到的案例之一。 –

相關問題