JS编程建议——22:少用函数迭代

本文探讨了ECMA-262v4中新增的forEach方法在数组遍历中的应用及其性能表现。通过对比发现,虽然forEach提供了更为简洁的语法,但其运行效率相较于传统的循环结构低8倍左右。文章建议开发者在非必要情况下选择循环而非函数迭代。

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

  1. items.forEach(function(value, index, array){
  2. process(value);
  3. });
    forEach在Firefox、Chrome和Safari等浏览器中为原生函数。另外,forEach在大多数JavaScript 库中都有等价实现,例如:
  4. //YUI 3
  5. Y.Array.each(items, function(value, index, array){
  6. process(value);
  7. });
  8. //jQuery
  9. jQuery.each(items, function(index, value){
  10. process(value);
  11. });
  12. //Dojo
  13. dojo.forEach(items, function(value, index, array){
  14. process(value);
  15. });
  16. //Prototype
  17. items.each(function(value, index){
  18. process(value);
  19. });
    尽管基于函数的迭代使用起来非常便利,但是比基于循环的迭代要慢一些。每个数组项要关联额外的函数调用是造成速度慢的主要原因。在所有情况下,基于函数的迭代占用时间是基于循环的迭代的8倍,因此在非特殊需求下,不建议使用函数迭代。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值