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中的offsetParent属性吧。
支持的浏览器:Internet Explorer 4.0+,Mozilla 1.0+,Netscape 6.0+,Opera 7.0+,Safari ......
JS中数组的批量填充方式:
1.在声明时同时进行填充
var beatles = Array("John","Paul","George","Ringo");
2.我们甚至用不着明确地表明我们是在创建数组.事实上,只需用一堆方括号括起来就足以创建我们想要的数组了:
......
效果图
代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>Scrollable</title>
<mce:script type="text/javascript"><!--
resizeCallback = function() {
......
//系统信息获取
function getSysInfo(){
var locator = new ActiveXObject ("WbemScripting.SWbemLocator");
var service = locator.ConnectServer(".");
//CPU信息
var cpu = new Enumerator (service.ExecQuery("SELECT * from Win32_Processor")).item();
var cpuType=cpu.Name,h ......
在asp.net开发中,经常会用到后台和前台的交互,就此总结了一点c#和javascript相互操作的方法
1.在后台c#代码中调用jacascript的方法
javascript代码:
<script type="text/javascript" language="javascript">
function test()
{
alert("oec2003");
return false;
}
</s ......