0 Comments

少用函数迭代

发布于:2012-12-03  |   作者:广州网站建设  |   已聚集:人围观

 

     ECMA-262v4为本地数组对象新增加了一个forEach方法。此方法遍历一个数组的所有成员,并且在每个成员上执行一个函数。在每个元素上执行的函数作为forEach()的参数传进去,并在调用函数时接收3个参数:数组项的值、数组项的索引、数组自身。例如:广州网站建设


  1. items.forEach(function(value, index, array){  
  2.     process(value);  
  3. }); 

 

      forEach在Firefox、Chrome和Safari等浏览器中为原生函数。另外,forEach在大多数JavaScript 库中都有等价实现,例如:

  1. //YUI 3  
  2. Y.Array.each(items, function(value, index, array){  
  3.     process(value);  
  4. });  
  5. //jQuery  
  6. jQuery.each(items, function(index, value){  
  7.     process(value);  
  8. });  
  9. //Dojo  
  10. dojo.forEach(items, function(value, index, array){  
  11.     process(value);  
  12. });  
  13. //Prototype  
  14. items.each(function(value, index){  
  15.     process(value);  
  16. }); 

 

      尽管基于函数的迭代使用起来非常便利,但是比基于循环的迭代要慢一些。每个数组项要关联额外的函数调用是造成速度慢的主要原因。在所有情况下,基于函数的迭代占用时间是基于循环的迭代的8倍,因此在非特殊需求下,不建议使用函数迭代。
飞机