當一個字符串只包含空白字符(例如:空格,製表符,換行符字符)時,x == !x
返回true
。當x ==!x在javascript中返回true時的情況
實施例:
"\t\n\r" == !"\t\n\r" // true
這是因爲當與==
比較,字符串僅空白字符被轉換爲0
, 但對於!
,"\t\n\r"
被認爲是作爲一個非空字符串,所以!"\t\n\r"
是false
, 0 == false
返回true。
問題是,這是唯一的情況下(字符串只有空字符)當x == !x
返回true? 還有其他的例子嗎?
通過@Ted霍普的回答啓發:
每串,除了空字符串""
可能轉換爲0使x == !x
看臺。
實施例:
"0.0" == !"0.0"
"608E-4234" == !"608E-4234"
'[ 「」] ==!( 「」); // true!''將truthy Array對象轉換爲'false',第一個'[「]]'將被轉換爲字符串'」「',並且'」== false'通過「true」最終的數字轉換。 –
同樣可以使用'[0] ==![0]' –
或者這個:'[[]] ==![[]]'無論嵌套深度如何,只要'.toString() '左邊陣列的結果是一個最終將被轉換爲0的值。[[[[[0]]]] ==![[[[[0]]]]' –