按速度优化JavaScript代码
一旦你的JavaScript能运行,你就会想到使其运行得更快。在讲解加速代码的方法之前,让我先讲讲“80/20规则”:百分之八十的优化是由最初百分之二十的工作所完成的。竭力实现剩余百分之二十的速度优化是一种巨大的痛苦,而且经常导致完全不能读和难以管理的代码。简言之,如果你的JavaScript运行得很慢,你可以用很多简单的方法来加速它,但是除非你的代码确实运行得很慢,我不会对它进行再优化。下面是一些使你的代码轻松运行的方法。
限制循环内的工作量
程序运行慢的最常见原因是循环内的重复工作。如果一条命令只需要执行一次,就没有必要把它放在循环内。例如:
var index = 0; while (index <10) { var the_date = new Date(); var the_day = the_date.getDay(); var the_name = prompt("what's the kid's name? " ,""); alert("On " + the_day + " " + the_name + " is a very special person."); index++; }
此程序循环执行10次。每次得到当天的日期,询问小孩的名字,然后打印出“On Monday,so-and-so is avery special person.”。
但是日期是不会改变的,总是今天。所以没有必要把前两行放在循环中。把它们从循环中拿出来,让其只执行一次而不是10次,这样会节省时间:
var index = 0; var the_date = new Date(); var the_day = the_date.getDay(); while (index <10) { var the_name = prompt("what's the kid's name? " ,""); alert("On " + the_day + " " + the_name + " is a very special person."); index++; }
定制if-then-else语句,按最可能到最不可能的顺序
因为if-then-else语句在遇到条件为真时结束,你可以通过把最有可能的条件放到最开始来减少需要判断的语句的数量。例如:
var pet = prompt("what kind of pet do you have?", ""); if (pet == "cat") { doCatStuff(); } else if (pet == "dog") { doDogStuff(); } else if (pet == "bird") { doBirdStuff(); } else if (pet == "lizard") { doLizardStuff(); }
一般来说,程序中的if子句比从lizard到dog需要执行的逻辑判断要少。
最小化重复执行的表达式
如果你发现需要重复计算一个特定的表达式,如var pi=22/7,只计算一次并把它放在一个全局变量中或许是个好主意。例如,不象下面程序这样:
function theArea(radius) { var pi = 22/7; var area = pi * radius * radius; return area; } function theCircumference(radius) { var pi = 22/7; var circumference = 2 * pi * radius; return circumference; }
而是这样做:
var pi = 22/7; function theArea(radius) { var area = pi * radius * radius; return area; } function theCircumference(radius) { var circumference = 2 * pi * radius; return circumference; }
我知道我在用一个全局变量,我也说过这不是一个好主意。然而,一些数字,如pi,其值在程序中永远不会改变,是此规则的特例。通过只计算pi一次,可以省去额外的计算。或许时间上的一些小的节省,累加起来会很管用。
如果你发现代码运行很慢,你只要注意一些事情。这些都很明显,但是当你发现你经常忽略象这样简单的优化技巧时,你会很吃惊。
还有,我的朋友,让我们结束今天的课程,这也是整个JavaScript高级教程的结束。如果你已经进行到这儿,并且你至少读过过去五天课程中的一半,那么你已经看过很多JavaScript代码了。实际上,如果你能理解跨越第一部分和第二部分的10课的大部分内容,你就可以很安全地把自己称为“JavaScript助手”。通往神秘真知的路就在你的脚下。
一、推荐使用迅雷或快车等多线程下载软件下载本站资源。
二、未登录会员无法下载,登录后可获得更多便利功能,若未注册,请先注册。
三、如果服务器暂不能下载请稍后重试!总是不能下载,请点我报错 ,谢谢合作!
四、本站大部分资源是网上搜集或私下交流学习之用,任何涉及商业盈利目的均不得使用,否则产生的一切后果将由您自己承担!本站将不对任何资源负法律责任.如果您发现本站有部分资源侵害了您的权益,请速与我们联系,我们将尽快处理.
五、如有其他问题,请加网站设计交流群(点击这里查看交流群 )进行交流。
六、如需转载本站资源,请注明转载来自并附带链接
七、本站部分资源为加密压缩文件,统一解压密码为:www.aizhanzhe.com
- 1尚硅谷前端学科全套视频[AVI][130.72GB]
- 2深入理解php:高级技巧、面向对象与核心技术(原书第3版) 【PDF】
- 3开发高质量PHP框架与应用的实际案例解析【PDF】
- 4响应式Web图形设计 ([美]Christopher Schmitt) 中文【PDF】
- 5响应式Web设计:HTML5和CSS3实践指南【PDF】
- 6响应式Web设计:HTML5和CSS3实战 第2版 (本·弗莱恩) 中文【PDF】
- 7Axure RP8 实战手册 网站和APP原型制作案例精粹(小楼一夜听春语) 试读版【PDF】【15.4MB】
- 8[马上学Android]安卓开发视频教程
- 9Android开发视频教程
- 10PHP100视频教程
- 1Java编程思想On Java 8[PDF][中文][英文][源码][15.31MB]
- 2PostgreSQL实战 (谭峰等著)【PDF】【221.29MB】
- 3【机器学习】菜菜的sklearn课堂(1-12全课)[PDF][源码][157.45MB]
- 4UNREAL ENGINE 4蓝图完全学习教程[PDF][66.67MB]
- 5加密与解密(第4版)[PDF][光盘源码][1.15GB]
- 6Qt 5.9 C++开发指南[PDF][276.26MB]
- 7Python数据分析与应用PPT、教案、实训数据、习题答案[PPT][142.49MB]
- 8数据中台:让数据用起来[PDF][12.80MB]
- 9计算机网络:自顶向下方法(第7版) 【PDF】【英文】【17.46MB】
- 10大话5G:走进万物互联新时代【PDF】【37.31MB】