当一个字符串只包含空白字符(例如:空格,制表符,换行符字符)时,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]]]]' –