如何优化JS中if else-if else的代码?if else性能到底高不高?

        相信各位小伙伴在开发中肯定经常遇到if else 的这种判断,俗话说的好能用if else的时候就不选择其他方式。如果是遇到两种结果的判断这种,使用if else还是比较优雅的,但是当系统在后续的维护中不停的加入判断条件时,这时候我们的代码看起来就会像屎山一样,不仅不易读,而且可维护行降低了许多。

         另外提醒友友们,我这里使用if else-if  并没有使用 if ,相信大家都是懂得的,这么做的方式性能会更好,如果使用下面的方式的话,每次执行判断会把所有的判断都执行一遍,而上边的else-if 就避免了这种问题。

        可是即使使用if else-if的方式的真的是性能最好的么?这种方式在大量判断的时候依然还是屎山。本着求知的精神,今天在开发中我也遇到了这种情况,且看我如何优化的吧!(前端菜鸡,不喜勿喷)。

         今天PM提了个小小的需求,让我改一下系统中天气预报的图标显示,将天气接口自带的图标换成UI 自己画的,另外让人无语的就是后端不动逻辑,全由前端控制(就是因为后端懒)。好吧,谁让咱听话呢,一个字: 干(改)!因为之前的代码并不是我写的,改别人的代码是最让人难受的,虽然有心理准备但是看到的时候也是惊讶了一番,如下: 

        当然U1S1,这么做一点问题也没有,就是可读性不高。天气的状况大概有几十种,下雪,下雨,下冰雹了都是。既然考虑性能,我先来算一算 if else的方式的时间复杂度在最坏情况下也就是每条都查一遍,有多少查多少这不 O(n)么,只要比O(n)低那就是正确的。想想在JS中比O(n)低的,有个查找对象属性键的好像是才用的Hash查找,这种方式的时间复杂度是O(1),且在最坏的情况下才是O(n), (这里我不晓得我的理解是不是对的,欢迎各位大佬指正)。

        于是我想到了才用JSON对象的方式将天气状况的关系用key-value的方式预存起来,使用查找key 的方式去查找天气所对应的图标信息。这样做会不会更好呢? 最起码 在代码可读性上提高了很多。

         是不是简洁了许多呢?下面为了验证这么做的性能是比if-else的方式好的我做了打印时间的处理,在经过测试,最好的情况下二者的差距不大。

 

         但是在最坏的情况下JSON对象的优势就体验出来了,几乎快了10倍,虽然这点速度对现在的浏览器来说是渣渣,但是起码性能不是提高了0.00x毫秒么,对吧,优化优化成功了。

         这么看来,各位友友们在遇到多种判断的时候尽量避免if-else吧!(不强求,各有所好啦!)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

1024次日落

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值