易截截图软件、单文件、免安装、纯绿色、仅160KB

JavaScript性能优化之循环操作

JavaScript中有四种不同类型的循环,for循环、do-while循环和while循环。(第四种类型为for-in循环,用于迭代对象的属性,本文不予讨论。)代码如下:
var values = [1, 2, 3, 4, 5];
//for 循环
for(var i=0; i<values.length; i++){
process(values[i]);
}
//do-while 循环
var j=0;
do{
process(values[j++]);
} while(j < values.length);
//while 循环
var k=0;
while(k < values.length){
process(values[k++]);
}
每个循环示例都会得到相同的结果:将values数组的所有条目传送到process函数。
仔细观察会发现,代码中每次循环执行都会调用 values.length 查看是否到达数组尾部。调用 values.length 查看数组长度是非常低效的,并且在循环执行中并不会改变values数组的长度。 通过使用本地变量替代属性查找将会提高循环的效率。
var values = [1,2,3,4,5];
var length = values.length;
//for 循环
for(var i=0; i<length; i++){
process(values[i]);
}
//do-while 循环
var j=0;
do{
process(values[j++]);
} while(j < length);
//while 循环
var k=0;
while(k < length){
process(values[k++]);
}
现在每个循环使用本地变量 length 替代了 values.length ,从而减少了每次循环执行中属性查找的时间。
另外一种简单的提升循环效率的方法是使用总长度向0递减的方法替代从0向总长度递增的方法。
var values = [1,2,3,4,5];
var length = values.length;
//for 循环
for(var i=length; i--;){
process(values[i]);
}
//do-while 循环
var j=length;
do{
process(values[--j]);
} while(j);
//while 循环
var k=length;
while(k--){
process(values[k]);
}
条件修改为等于0后,每个循环的执行效率有了显著的提高。(当循环变量等于0时,条件判断为true)。
每种循环的执行效率都是相同的,所以你并不需要烦恼选择哪种循环方式效率最高。


相关文档:

非常全面的实用JavaScript开发工具列表

在今天网络开发方面,JavaScript起了很关键的作用;像jQuery, MooTools, Prototype等等JavaScript框架以及其它JavaScript类库让我们的生活轻松了不少。但是随着Rich Internet Applications(RIA)的面世及迅速应用,书写更强大,更坚实可靠的JavaScript的需要日益迫切。(51CTO编辑:当前Web开发界普遍认为JavaScript将会成为 ......

JavaScript消除字符串空格

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>js除去字符串空格 ......

JavaScript 和JSP 连接SqlServer 数据库

第一种 JavaScript连接数据库:
<mce:script language="JavaScript"><!--
// 创建数据库对象
var objdbConn = new ActiveXObject("ADODB.Connection");
// DSN字符串
var strdsn = "Driver={SQL Server};SERVER=192.168.0.210;UID=xhb;PWD=xhb;DATABASE=books";
// 打开数据源
objdbConn.Open(strdsn);
// ......

JavaScript连接SqlServer并实现分页(二)

//总记录数
function sumRecord()
{
var conn= Server.CreateObject("ADODB.connection");
var rs= Server.CreateObject("adodb.recordset");
conn.open("PROVIDER=SQLOLEDB;DATA SOURCE=127.0.0.1;UID=sa;PWD=123456;DATABASE=test");
var sql = "select count(*) as RecordCount from baoming";
rs.open(sql, ......

Javascript学习笔记

1.Jscript 不认为语句块是一个新的范围(作用域)只有函数创建新的范围。
2.JScript语句中使用等号(=)给变量赋值:等号是赋值运算符。
 “=”运算符左边的操作项总是一个Lvalue,即可以是:
 对象,
 数组元素,
 对象属性。
 “=”运算符右边的操作项总是一个Rvalue ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号