在以下代码段中我预计会出错,但会返回false。为什么呢?
foo = {}
foo <- "lel"
返回false
当然不是在比较哪一个更大,所以它在做什么?
答案 0 :(得分:15)
<-
并不意味着任何单一标记。您已将<
(小于)后跟-
(一元-
=否定)应用于"lel"
。 E.g:
foo < -"lel"
这是错误的,因为-"lel"
是NaN
*,所有与NaN
的比较都是假的(即使是相等,例如NaN === NaN
也是假的)
(foo
强制<
被<
强制转换为[{1}}和>
当其中一个操作数为number且另一个不是]。强制{}
编号也会产生NaN
。所以最后一步是NaN < NaN
这是假的,因为,所有与NaN
的比较是错误的。)
* ...因为将一元-
或+
应用于字符串会将该字符串强制转换为数字; "lel"
强制NaN
,然后否定为NaN
,因为比较,NaN
上的所有数学运算都会产生NaN
。