在下面的代码片段中,我预计会出错,但会返回false.为什么?
foo = {}
foo <- "lel"
Run Code Online (Sandbox Code Playgroud)
返回false
当然不是在比较哪一个更大,所以它在做什么?
T.J*_*der 15
<-并不意味着任何东西作为单一的标记.你有<(小于)后跟-(一元-=否定)适用于"lel".例如:
foo < -"lel"
Run Code Online (Sandbox Code Playgroud)
它是假的,因为-"lel"是NaN*,并且所有的比较NaN都是错误的(即使是相等,例如NaN === NaN是假的).
(碰巧的是foo被强制转换为数字<[ 当其中一个操作数是数字型而另一个不是时]是什么<和>做什么.而强迫{}数字也会产生NaN.所以最后一步NaN < NaN是假的因为,所有的比较NaN都是错误的.)
*...因为应用一元-或+字符串将该字符串强制转换为数字; "lel"强迫NaN,然后否定这会给你,NaN因为比较,所有数学运算NaN结果NaN.
| 归档时间: |
|
| 查看次数: |
46 次 |
| 最近记录: |