js 循环

在用for遍历数组的时候一定要用 for(var i=0,n=arr2.length;i<n;i++)的方式,而不要用for(var i=0;i>arr.length;i++)的方式哦,因为用脑子想想也知道,第二种方法的第二部分会一直去计算数组的length,所以自然效率比较低。

我们这里不说其他程序语言,而只讨论js,因为不同的语言,实现可能不同。
其实上面说到的所谓的“动脑子想想就知道”也许只是因为大家只是用脑子想了想,而不是仔细想了想或者亲自去试了试。所以现在我们仔细想想,第一种写法真的会比第二种写法快么?arr.length会耗费很多cpu么?arr.length并不是调用了一个方法,而只是读取了一下数组的length属性啊,读取原生属性和读取定义的变量,哪个会快?

只是我在网上看到的一个数据:

复制代码
代码如下:

var arr=[],arr2=[],i=0

while(i<100000){
arr.push(i)
arr2.push(i)
i++
}

M.TA.begin("0000");
for(var i=0;i<arr.length;i++){

arr[i]=arr[i]*arr[i]*arr[i]
}
M.TA.end("0000","for(var
i=0;i<arr.length;i++)")
M.TA.begin("0001");
for(var
i=0,n=arr2.length;i<n;i++){
arr2[i]=arr2[i]*arr2[i]*arr2[i]
}

M.TA.end("0001"," for(var i=0,n=arr2.length;i<n;i++)")

M.TA.showResult()

当然,这段代码是很变态的,占用了300多兆的内存。 结果如下:
chrome


firefox


(在做过N种性能测试后发现firefox在基础运算上的效率比chrome高很多,只是涉及到渲染的就慢很多了)

ie8

(减少了N个数量级之后的记过,上述脚本在ie里无法运行)

总结:?
其实做这个测试不是为了强调for(var
i=0;i<arr.length;i++)的写法快多少,因为测试也是有些许误差的,只是为了说明这种写法并不会慢到哪里去,而且这种写法有一定的灵活性,书写也简单,代码量又少,那我们为什么不用它呢?
如果是第一种写法,在循环的时候数组长度发生变化呢?这种情况就处理不了了吧

时间: 2024-10-11 01:39:55

js 循环的相关文章

JS循环

JS循环基础知识 [循环结构的执行步骤] 1,声明循环变量: 2,判断循环条件: 3,执行循环体操作: 4,更新循环变量: 然后,循环执行2-4,直到条件不成立时,跳出循环: while循环()中的表达式,运算结果可以是各种类型.但是最终都会转化为真假,转换规则同if结构: ①boolean:true为真,flase为假: ②string:空字符串为假,所有非空字符串为真: ③number:0为假,一切非0数字为真: ④null,undefined,NaN全为假: ⑤object:全为真: wh

Handlebars.js循环中索引(@index)使用技巧(访问父级索引)

使用Handlebars.js过程中,难免会使用循环,比如构造数据表格.而使用循环,又经常会用到索引,也就是获取当前循环到第几次了,一般会以这个为序号显示在页面上. Handlebars.js中获取循环索引很简单,只需在循环中使用{{@index}}即可. 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <META http-equiv=Content-Type content="text/html; charset=utf-

JS 循环遍历JSON数据 分类: JS技术 JS JQuery 2010-12-01 13:56 43646人阅读 评论(5) 收藏 举报 jsonc JSON数据如:{&amp;quot;options&amp;quot;:&amp;quot;[{

JS 循环遍历JSON数据 分类: JS技术 JS JQuery2010-12-01 13:56 43646人阅读 评论(5) 收藏 举报 jsonc JSON数据如:{"options":"[{/"text/":/"王家湾/",/"value/":/"9/"},{/"text/":/"李家湾/",/"valu e/":/"10

js循环GridView判断CheckBox是否全部未选中

function isQueryPriceReplyProduct() { var gridItem; var itemIndex = 0;  var IDS = ''; while (gridItem = dgQueryPriceReplyProduct.Table.GetRow(itemIndex)) {   itemIndex++;   if (!gridItem.Cells[0].Value) { continue; } IDS += gridItem.Cells[1].Value + 

JS数组+JS循环题

先看JS循环作业题: 一.一张纸的厚度是0.0001米,将纸对折,对折多少次厚度超过珠峰高度8848米 <script type="text/javascript"> var a=0.0001; var i=0; while(a<=8848){ a=a*2; i++; } alert(i); </script> 这个题主要考察的点:1.当要求得到什么效果或者多少次结束时,我们可以考虑运动while语句是比较方便的: 2.对折一次厚度要*2,所以下次折叠后,

js循环绑定事件

在js中,用循环来为一对元素队列的元素绑定事件,是一个常见的问题. 通常进入误区的新人,都会这么写代码: (假设元素队列为o,默认使用jQuery) //error method var o =$('.blockHead'); for(var i=0; i<o.length; i++){ o[i].onclick = function(){ function(i){ alert(i); } } } 当然这种情况下,你会发现每个元素点击运行时,显示的 i值 都是 o.length-1: 因为js的

Data层相关问题 &amp; JS循环取值

第一次写博客,里面是自己工作中碰到的问题及总结的知识点,便于自己以后回顾,技术大牛们请直接忽略这篇文章,也希望能帮助到想我这样的小白! Data层相关问题总结: 1. 代码管理用的是 VSS 2005: 改好程序后,必须要重新生成下:(注意文件之间的引用关系的顺序),程序改的是对的,也在本地保存了,断点调试的时候还是之前没有改的代码,郁闷了好久.别的引用没有更新,害惨我了. 第一次碰到,不了解,白白浪费了两天的时间,两天的时间,还破坏了我周末的心情! 2. SQL语句写好后,注意起中英文之间的输

JS 循环遍历JSON数据

JSON数据如:{"options":"[{/"text/":/"王家湾/",/"value/":/"9/"},{/"text/":/"李家湾/",/"value/":/"10/"},{/"text/":/"邵家湾/",/"value/":/"13/

js循环POST提交添加辅助单位

1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title>js循环POST提交添加辅助单位</title> 6 <s

js循环处理后台返回的json数组

1 <script type="text/javascript"> 2 function gongdan_search(elm){ 3 var dangqian_value=$(elm).val(); 4 if(dangqian_value){ 5 $.ajax({ 6 url:'__URL__/order_infos_list_search', 7 type:'post', 8 data:{dangqian_value:dangqian_value}, 9 success