一、忘记类型转换的小数比较错误
举个例子,我们要进行一个字符串型的小数的比较:'8.8'>'8.7'
,结果自然是true。
那么'8.8'>'8.10'
呢?结果仍然是true,但愿你没有将它误以为是8.8>8.10
。
二、忘记类型转换的版本号比较错误
类似上面的问题,在进行版本号比较时,一样存在。比如,我们这么比较'8.8.1'>'8.10.1'
,结果就是错误的。合理的比较方法应该是将两个待比较的版本号按'.'作为分隔符进行拆分,并将每一位转换成数字,然后按位比较。
三、字符串型的'true','false'条件判断时导致的错误
来看这个语句:
if('false') console.log(1);
此时你很可能是希望该条件判断为false,而实际上它却是true。这样直接写出来相信每个人都不会弄错,问题在于上面这个语句中的'false',往往是经过诸多计算后得到的一个结果,或者是来自于接口的某个数据项,在这些诸多的表面现象掩盖之下的字符型'false',有时很容易被疏忽。
类似这样的容易出现错误的语句还有:
if('0') console.log(1);
if('undefined') console.log(1);
var a;
if(typeof a) console.log(1);
诸如此类,不一而足。类似这种条件判断语句,在代码中再常见不过,而且往往是业务逻辑执行与否的判断开关,一旦出现判断错误,则整个分支的执行都是错误的,影响相当严重。如果类似上述的错误语句出现在基础工具方法中,影响的面还将更大。所以,可得长点心了!