2014-01-07 26 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最初提到的案例之一。 –

相关问题