今天看到项目里面有块代码是做版本检查,运行了一下发现了一个问题。
前提:我电脑上node的版本是v14,项目需要最低版本为v4。
运行了代码之后居然报错,说版本不对。我有点诧异。如下图:
holy 谢特
14 < 4 居然返回true,这怎么可能?想也不用想肯定是false啊
最后经过排查发问题是两个字符串进行了比较大小,实质是这样的
"14" < "4" // true
14 < 4 // false 理论上应该是false
这个时候就要思考,为什么字符串的时候是true呢?
同是字符串的数字在比较大小的时候,首先左边第一位的是 '1' 与右边第一位 '4' 做比较大小,然后就返回返回true了。
解决方案就是比较之前把string先转成number
感觉触及到认知外的东西了,所以记录一下。