关于JavaScript判断语句的一个小坑
2017-01-10 14:50
169 查看
不久之前在自己做的项目里,发现了一个判断语句失效的例子,比较大小某些时候不成立,
各种想不通,于是用了减法,这样的话,得出来的结果再进行判断,顺理成章多了,还更
加准确。当时没有过多的思考,今天又一次遇到这样的情况,判断语句失效,相比上一次,
这个的判断多了个条件。在各种梳理判断语句逻辑的情况下,还没有找到问题所在,我忽
然就想起上一次的例子,最终找到原因是数据类型。在没有格式装换的情况下,获取的
value值是字符串类型,进行逻辑运算的时候,认其编码,从而导致判断结果与预期不符,
而因为数字的某些判断结果类似于预期判断结果,从而容易出现2大于10这样的输出结果,
各种想不通,于是用了减法,这样的话,得出来的结果再进行判断,顺理成章多了,还更
加准确。当时没有过多的思考,今天又一次遇到这样的情况,判断语句失效,相比上一次,
这个的判断多了个条件。在各种梳理判断语句逻辑的情况下,还没有找到问题所在,我忽
然就想起上一次的例子,最终找到原因是数据类型。在没有格式装换的情况下,获取的
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,应采取相应措施
很多时候,一个不经意的疏忽,会导致意想不到的结果,测试的时候要更加小心和全面。
相关文章推荐
- 关于javascript中判断一个字符串是否包含另一个字符串
- 遇到一个关于调用javascript语句不起作用的问题
- 关于怎样用javascript判断网页上我们想要必须选择的复选框至少选择一个的问题
- 请教一个关于javascript执行sql语句的问题
- 关于合成模式的javascript的一个treeview例子
- 一个简单的关于权限判断登陆的javaBean文件
- 关于一个表达式判断2的幂的问题
- 如何判断数据库中1个表已经存在,这样不会重复创建一个新表(用sql语句)
- 关于javascript如何判断某个字符是否占用两个字符的讨论
- 在水晶报表中写一个条件判断语句
- 关于goto语句能不能从复杂的嵌套循环判断中跳出去的问题讨论
- 关于javascript中parseInt函数的一个所谓的bug
- JavaScript 里如何判断一个字符串里是否存在某个字符串?(支持中文)
- javascript:如何判断一个网页被用户关闭
- 关于sql查询语句 的一个问题
- 关于一个字符串的SQL语句
- 关于javascript中parseInt函数的一个所谓的bug
- 请教关于ASP.Net2.0和JavaScript的一个问题
- 关于goto语句能不能从复杂的嵌套循环判断中跳出去的问题讨论
- javascript一个判断浏览器类型的函数(类)