我比较了一些字符串和数字以将结果视为真假
"dfdf" > 1
false
"dfdf" > 99
false
"dfdf" > 9999
false
"dfdf" > 99999
false
1> ''
true
1> '545'
false
1> '545d'
false
1> '555'
false
1> 'ddfdf'
false
9999 > 'dfsdfadf'
false
正如您所看到的,我在代码中尝试了几种不同的组合,但得到了混合结果,并想知道比较在 javascript 中究竟是如何工作的。
另一个更令人困惑的补充
"dasfads" > "dasfdsf"
false
"abc" > "a"
true
"abc" > "agf"
false
"abcf" > "agf"
false
将字符串与数字进行比较将强制将字符串数据计算为数字值。如果字符串数据不能转换为数值,它将返回一个 NaN 数给给定的比较。
由于 NaN 根本不具有可比性也不等于任何东西,甚至不与另一个 NaN 相比
NaN == NaN > false
“大于”或“小于” NaN 比较必须双向返回false。因为这是唯一正确的答案,没有什么比你没有的价值更大或更小了。因此这两种说法都是错误的。例如:0 > NaN
和0 < NaN
>假。
但请记住,比较两个数据字符串,例如:"98A" > "999"
将返回比较false,而: "9A"> "999" 将返回true
这是一件非常有用的事情,因为知道这一点(两个字符串将按字母顺序进行比较),您可以比较时间数据,而无需承担将这些值转换为数字的负担并直接使用:
"09:32:28" > "09:31:59" > true
幸运的"PM" > "AM" > true
是纯粹的(语言)机会。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句