前端常见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);

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

目录
相关文章
|
5天前
|
JavaScript 前端开发 C++
【Web 前端】JavaScript window.onload 事件和 jQuery ready 函数有何不同?
【5月更文挑战第2天】【Web 前端】JavaScript window.onload 事件和 jQuery ready 函数有何不同?
|
6天前
|
JavaScript 前端开发 开发者
【Web 前端】什么是JS变量提升?
【5月更文挑战第1天】【Web 前端】什么是JS变量提升?
【Web 前端】什么是JS变量提升?
|
7天前
|
缓存 前端开发 JavaScript
【JavaScript 技术专栏】JavaScript 前端路由实现原理
【4月更文挑战第30天】本文探讨了JavaScript前端路由在SPA中的重要性,阐述了其基本原理和实现方式,包括Hash路由和History路由。前端路由通过监听URL变化、匹配规则来动态切换内容,提升用户体验和交互性。同时,文章也提到了面临的SEO和页面缓存挑战,并通过电商应用案例分析实际应用。理解并掌握前端路由能助开发者打造更流畅的单页应用。
|
8天前
|
前端开发 JavaScript 数据安全/隐私保护
前端javascript的DOM对象操作技巧,全场景解析(二)
前端javascript的DOM对象操作技巧,全场景解析(二)
|
8天前
|
移动开发 缓存 JavaScript
前端javascript的DOM对象操作技巧,全场景解析(一)
前端javascript的DOM对象操作技巧,全场景解析(一)
|
8天前
|
缓存 编解码 自然语言处理
前端javascript的BOM对象知识精讲
前端javascript的BOM对象知识精讲
|
8天前
|
JavaScript 前端开发 开发者
【Web 前端】JS模块化有哪些?
【4月更文挑战第22天】【Web 前端】JS模块化有哪些?
|
8天前
|
前端开发 JavaScript
【Web 前端】 js中call、apply、bind有什么区别?
【4月更文挑战第22天】【Web 前端】 js中call、apply、bind有什么区别?
【Web 前端】 js中call、apply、bind有什么区别?
|
8天前
|
前端开发 JavaScript 索引
【Web 前端】JS的几种具体异常类型(报错)
【4月更文挑战第22天】【Web 前端】JS的几种具体异常类型(报错)
|
8天前
|
前端开发 JavaScript
【Web 前端】JS继承的方法有哪些?
【4月更文挑战第22天】【Web 前端】JS继承的方法有哪些?