既然"string"是一个非空字符串,它不应该返回true吗?这种比较究竟是如何工作的?
当将字符串与数字进行比较时,JavaScript 会尝试将字符串转换为数字以进行逻辑比较。
将"string"
转换为数字会导致NaN
,并且NaN > 0
false
。
比较运算符
这是有效的,因为类型转换和NaN > 0
是假的简单事实。
应用于>
运算符时,两个操作数都转换为 Numbers,因此比较变为
Number("string") > 0
相当于计算结果为false
的NaN > 0
。