作家
登录

提高javascript效率 一次判断,而不要次次判断

作者: 来源:www.28hudong.com 2013-03-30 00:30:26 阅读 我要评论

判断嘛,就是面临2个或以上的选项时进行选择。比如我家门前去公司有一个岔路,只要我第一次知道了哪一条路是对的,那我下一次或以后的每次都不用再思考了,直接走那条路即可——当然,突发天灾时不算。 做出判断是需要时间的,是需要对应条件的。正确的判断很好,但每次面临岔路,哪怕是走了无数次的岔路,都来进行一下判断,无疑是一种脑残行为。 下面来看一个我们平时经常看到的JS函数,他的作用是判断浏览器类型然后设置对应的透明度属性: 复制代码 代码如下: function setAlpha(obj,alpha){ if (-[1,]) obj.style.opacity = alpha / 100; else obj.style.filter = "alpha(opacity=" + alpha + ")"; } 这个函数有错吗?没有。先判断浏览器是否是标准浏览器,如果是,就直接通过opacity设置透明;如果不是,则使用IE滤镜来实现透明度。 逻辑清晰,代码简练,精品啊! 不过,没有错误,却有失误。 通常,这种设置透明度的函数都会用来制作淡入淡出效果,也就是说它会被setTimeout一次次的调用,直到循环结束。 这时候问题就来了。回到前面的岔路问题,这个函数就相当于,每次来到路口,都要思考判断。第1次,来到路口,骚等,我看看,噢,是firefox啊,走第1条路;第2次,又来到这路口,等等,我看看,噢,又是firefox啊,还走第1条路……第3次……第4次。。。。不管多少次,这个函数都会像最敬业的交警一样来查看你的身份————你,不烦吗?你不烦我都烦了! 这时候,如果你是过路的,你肯定希望这个交警消失。 其实,遇到岔路我们可以这样:既然已经知道只走一条路,那我干脆把另外的路给堵死算了!当然在现实生活中不可能这样做,不过在代码里却不难实现,换个思路即可。 javascript有个神奇的地方,就是匿名函数(通常用来自执行),自执行函数的意思是呢,他声明的时候就执行掉了,以后就不会再出现了,你想找都不定能找到!个人觉得,这个性不错。 看下面的代码,同样是设置透明度的函数: 复制代码 代码如下: var setAlpha = (function(obj,alpha){ var set; if (-[1,]) { set = function (obj,alpha) { obj.style.opacity = alpha * 0.01; } } else { set = function(obj,alpha){ obj.style.filter = "alpha(opacity=" + alpha + ")"; } } return set; })() 也许你要不满了:这是什么玩意儿啊,好像初学者的水平(被你看穿了。。。)但是!这个却比前面的版本效率高很多。不信你可以在firefox和ie6下分别alert一下这个函数,就明白了。 通过自执行函数,当声明setAlpha的时候就执行了函数,而这个函数的作用就是,判断浏览器,并确定该使用哪种设置透明度的方法。由于浏览器的类型在打开页面后就不可能再变化,也就是以后都不用再判断了。就算你调用10万次这个函数,他也不会再判断,而是直接执行。 虽然代码丑,但境界就不同了… 这个例子只是一个小小示范,我只是希望你能明白【一次判断,而不要次次判断】的道理,并发扬光大。减少判断次数,对js的效率是一个很大的提高。转自:jo2.org

  推荐阅读

  你需要知道的10个最佳javascript开发实践小结

尽管很多的开发人员都乐于颂扬javascript,但是仍旧有人看到它的阴暗面。 使用很多javascript代码的web页面会加载很慢,过多的使用javascript使得网页丑陋和拖沓。很快如何有效地使用javascript成为一个非常火热的>>>详细阅读


本文标题:提高javascript效率 一次判断,而不要次次判断

地址:http://www.17bianji.com/kaifa2/JS/23483.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)