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

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

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

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

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

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

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数据直接比较的是asc
if(syear-eyear>0|| (syear-eyear==0 && smonth - emonth>0)){
    $.messager.model = {
        ok:{ text: "确定", classed: 'btn-warning'}
    };
    $.messager.alert("提醒" , "开始年月大于结束年月");
    return false;
}

 

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值