在JS中经常遇到纯数字和各种各样的字符串进行比较,并且稍有混乱,特别整理一下,理清思路。
在JavaScript中,“<”等运算符会强制把左右两边的操作数都先通过ToNumber()抽象运算转换为Number类型后再做比较,除非两个操作数都是String。
|
|
Sayings
遇到string类型比较的问题,是因为在项目中出了一个bug,if(XXX < YYY) 的判断时对时不对。
后来经过debug,发现是数字和数字字符串比较时出现了问题。查看资料后,索性把其他情况下的比较也都一一列出记录。
参考文献:
ECMAScript 5.1里“<”运算符的规定:https://es5.github.io/#x11.8.1
抽象运算步骤:https://es5.github.io/#x11.8.5