前端常见bug系列4: JavaScript中忘记类型转换所导致的条件判断错误举例-阿里云开发者社区

开发者社区> pai_an> 正文

前端常见bug系列4: JavaScript中忘记类型转换所导致的条件判断错误举例

简介: ### 一、忘记类型转换的小数比较错误 举个例子,我们要进行一个字符串型的小数的比较:`'8.8'>'8.7'`,结果自然是true。 那么`'8.8'>'8.10'`呢?结果仍然是true,但愿你没有将它误以为是`8.8>8.10`。 ### 二、忘记类型转换的版本号比较错误 类似上面的问题,在进行版本号比较时,一样存在。比如,我们这么比较`'8.8.1'>'8.10.
+关注继续查看

一、忘记类型转换的小数比较错误

举个例子,我们要进行一个字符串型的小数的比较:'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);

诸如此类,不一而足。类似这种条件判断语句,在代码中再常见不过,而且往往是业务逻辑执行与否的判断开关,一旦出现判断错误,则整个分支的执行都是错误的,影响相当严重。如果类似上述的错误语句出现在基础工具方法中,影响的面还将更大。所以,可得长点心了!

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Fundebug前端JavaScript插件更新至1.7.1,拆分录屏代码,还原部分Script error.
摘要: BUG监控插件压缩至18K。 1.7.0拆分了录屏代码,BUG监控插件压缩至18K,另外我们还原了部分Script error,帮助用户更方便地Debug。请大家及时更新哈~ 拆分录屏代码 从1.7.0版本开始,我们拆分了录屏代码。
1349 0
Fundebug:JavaScript插件支持错误采样
Fundebug的付费套餐主要是根据错误事件数制定的,这是因为每一个发送到我们服务器的事件,都会消耗一定的CPU、内存、磁盘以及带宽资源,尤其当错误事件数非常大时,会对我们的计算资源造成很大压力。 如果您希望采样收集错误,比如“只收集30%的错误”,可以将sampleRate属性设为0.3。
502 0
duilib 修复padding属性导致其他控件自动计算宽高度错误的bug和导致自己宽高度错误的bug
转载请说明原出处,谢谢~~:http://blog.csdn.net/zhuhongshu/article/details/42950733          BUG 一:padding导致其他控件宽度计算错误             今天在写项目的一个布局时,用到了最常用的相对布局属性padding:在一个纵向容器里,给其中的各个子元素设置了padding属性来做相对布局。
1097 0
JavaScript中字符串与Unicode编码的互相转换
JavaScript中字符串与Unicode编码的互相转换 这段代码演示了JavaScript中字符串与Unicode编码的转换: // 为了控制台的演示方便, 变量没有添加 var 定义 // 实际编程中请避免 // 字符串 str = "中文"; // 获取字符 char0 = str.
622 0
duilib relativepos属性导致控件错误的bug修复
转载请说明出处,谢谢~~         我在仿酷狗音乐播放器的开发日志系列里,曾经提到了这个bug,文章地址为:http://blog.csdn.net/zhuhongshu/article/details/38145365。
933 0
JavaScript使用原型判断对象类型
1. constructor属性 在JavaScript创建对象(二)——构造函数模式中,我们说过可以使用对象的constructor属性判断对象的类型:p1.constructor === Person,可能当时就有细心的读者会想,我们并没有给这个对象添加过constructor,这个属性是从哪儿来的呢?讲过原型之后,我们知道这个属性是原型中的,所以一般重写原型时也都会把constructor补上。
1134 0
+关注
pai_an
拍岸,前端,现就职于阿里巴巴
12
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载