哪个是更高效的array.forEach或angular.forEach?

rit*_*tam 10 javascript arrays angularjs

array.prototype.forEach

forEach()对数组中存在的每个元素按升序执行一次提供的回调.对于已删除或未初始化的索引属性(即在稀疏数组上),不会调用它.

资料来源:https://developer.mozilla.org/enUS/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach

angular.forEach

为obj集合中的每个项目调用迭代器函数一次,可以是对象或数组.使用iterator(value,key,obj)调用迭代器函数,其中value是对象属性或数组元素的值,key是对象属性键或数组元素索引,obj是obj本身.指定函数的上下文是可选的.

资料来源:https://docs.angularjs.org/api/ng/function/angular.forEach

但我想知道哪一个更有效率和性能.

bfm*_*ags 11

AngularJS forEach用于实现ES5 forEach(如果可用),这不是最快的,但是自提交以来它使用最快的for循环.

https://angularjs.de/buecher/angularjs-cookbook/es5-array-functions

如果你看一下这个比较,你会发现,ES5 forEach实现并不是最快的.此比较中的AngularJS版本使用ES5 forEach(如果可用).这个提交改变了这一点.现在它始终使用最快的for循环.

  • @bfmags ,你**确定**它使用 ES5 forEach 吗?查看 v1.5.7 的源代码 https://github.com/angular/angular.js/blob/v1.5.7/src/Angular.js#L237 Line 248 特别有趣。如果对象是一个数组,它*不*使用任何本机`forEach`函数。相反,它使用了一个 `for` 循环。只有当对象*不是*数组(或类似数组)时,执行才会流向第 255 行,该行将依赖于对象上的“forEach”函数。 (2认同)
  • @Snixtor 更新了!如果可用,它曾经使用 ES5 forEach,但现在它总是使用最快的 for 循环。谢谢! (2认同)
  • @rittam社区(我和bfmags)共同努力,为您的问题制作出高质量的答案.它被投了几次,​​这意味着其他人认为这是一个有用的答案.您应该考虑将其标记为"答案",或澄清为什么您认为它不能回答您的问题. (2认同)