关于JavaScript判断语句的一个小坑

来源:互联网 发布:linux目录常用命令 编辑:程序博客网 时间:2024/06/06 00:15

不久之前在自己做的项目里,发现了一个判断语句失效的例子,比较大小某些时候不成立,

各种想不通,于是用了减法,这样的话,得出来的结果再进行判断,顺理成章多了,还更

加准确。当时没有过多的思考,今天又一次遇到这样的情况,判断语句失效,相比上一次,

这个的判断多了个条件。在各种梳理判断语句逻辑的情况下,还没有找到问题所在,我忽

然就想起上一次的例子,最终找到原因是数据类型。在没有格式装换的情况下,获取的

value值是字符串类型,进行逻辑运算的时候,认其编码,从而导致判断结果与预期不符,

而因为数字的某些判断结果类似于预期判断结果,从而容易出现2大于10这样的输出结果,

var syear = $('#volumecount_count_startyear').val();var smonth = $('#volumecount_count_startmonth').val();startMonth = syear + "-" + smonth;var  eyear = $('#volumecount_count_endyear').val();var emonth = $('#volumecount_count_endmonth').val();endMonth = eyear + "-" + emonth;//直接获取的(字符串)非num数据直接比较的是ascif(syear-eyear>0|| (syear-eyear==0 && smonth - emonth>0)){    $.messager.model = {        ok:{ text: "确定", classed: 'btn-warning'}    };    $.messager.alert("提醒" , "开始年月大于结束年月");    return false;}

//JavaScript判断条件的比较,数值的比较要注意必须要关注数据格式,直接获取的(字符串)非num数据直接比较的是asc,应采取相应措施

很多时候,一个不经意的疏忽,会导致意想不到的结果,测试的时候要更加小心和全面。

0 0