如下代码:var a =[];
var tBegin=(new Date()).getTime();
for(var i=0;i<100000;i++)
{
    a[i]=i;
    //a.push(i);
}
   var tEnd=(new Date()).getTime();
   var tt="用了:"+(tEnd-tBegin)+"毫秒";
问题:
经过运行监测之后,发现,用a[i]=i;方式,不超过100毫秒,一般在96,98之间徘徊。
但是用push方式,要200毫秒以上。有明显的延缓。疑惑:
那种效率高?用哪种方式更好?push有何优点?直接赋值有何缺点?

解决方案 »

  1.   


    你的测试已经有结果,实际上,用索引访问是比push方式效率要高,所以能用索引的尽量用索引,
    push方式 的好处就是方便,可以不需要长度
      

  2.   

    a[a.length] = i;
    a.push(i);
      

  3.   

    鄙视一把,什么叫有经验,
    最简单直接的方法,你去jquery和Ext的源文件,是不是全使用的索引来访问
      

  4.   

    1楼已经说的清楚了,要更详细的可以去查下push的具体原理.接分...
      

  5.   

    a[i]=i;
    向数组元素赋值a.push(i);
    把参数添加到数组的尾部,并返回新的长度。