我在编写的脚本中发现了一个错误,而且我正在弄清楚究竟是什么导致了这些问题。具体做法是:
"49px" < 50 === false
我在这里可以想到两种不同的转换:
49 < 50 === true
"49px" < "50" === true
"49" < 50 === true // just for the hell of it
我修复了:
parseInt("49px") < 50 === true
那为什么评价为假?到底发生了什么?
答案 0 :(得分:10)
如果一个操作数是一个数字而另一个操作数是一个字符串,那么the string is converted to a number然后进行比较。
如果字符串无法转换为数字,则会转换为NaN
,并且比较始终返回false
。
答案 1 :(得分:3)
当要求javascript将数字与其他数字进行比较时,它会尝试将“其他”转换为数字。在这种情况下,"49px"
评估为NaN
,因此NaN < 50
为false
。