手机版

如何编写js数组的for循环?

时间:2021-10-22 来源:互联网 编辑:宝哥软件园 浏览:

那就看看我今天开始怀疑哪个权威了。自从我开始学习编程,接触数组,在不同的地方,不同的时间,不断有人提醒我,用for遍历数组时,一定要用for(var i=0,n=arr 2 . length;在;I)而不是for(var I=0;长度;I),因为你用脑子知道第二种方法的第二部分总会计算数组的长度,所以自然效率比较低。哦?这里不讨论其他编程语言,只讨论js,因为不同的语言可能有不同的实现,探索其他语言是什么是每个人的事。其实,上面提到的所谓“用脑子想一想就知道”可能只是因为大家只用脑子想,而没有仔细思考或者亲自尝试。所以现在我们仔细想想,第一次写真的会比第二次快吗?arr.length会消耗大量的cpu吗?不,为什么要花cpu?Arr.length没有调用方法,只是读取了数组的length属性。你认为读原生属性和读定义变量哪个更快?我觉得阅读长度会更快,所以我写了一个测试来测试我的想法:我用了一个自己的小测试框架,复制了如下代码:Vararr=[],arr2=[],I=0While (i100000) {arr。推(我)arr2。push(I)I } m . for(var I=0;长度;I){ arr[I]=arr[I]* arr[I]* arr[I]} M . ta . end(' 0000 ',' for(var I=0;长度;I)')M . ta . begin(' 0001 ');for(var i=0,n=arr 2 . length;在;I){ arr 2[I]=arr 2[I]* arr 2[I]* arr 2[I]} M . ta . end(' 0001 ',' for(var i=0,n=arr 2 . length;在;I )') M.TA.showResult()当然,这段代码非常不正常,占用了300多兆内存。结果如下:Chrome

火狐

(做了N次性能测试后发现,firefox在基础计算方面比chrome高效很多,但在渲染方面要慢很多。)IE 8

(n个数量级后的缺点减少,以上脚本无法在ie中运行)总结:实际上,这个测试并不是为了强调(var I=0;长度;I)要快得多,因为测试中有一些错误,只是为了说明这种编写不算太慢,而且有一定的灵活性,编写简单,代码少,那我们为什么不用呢?如果用第一种方式写,循环过程中数组长度发生变化怎么办?我不能处理这种情况。其实我还是很尊重权威的,所以在这里写的时候还是很担心的。是因为我犯了错吗?如果是这样,我们就一笑置之吧。如果没有,那么我终于写了一篇博文摆架子了。转载:http://www.html-js.com

版权声明:如何编写js数组的for循环?是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。