array.forEach和angular.forEach哪个更有效率?

10

array.prototype.forEach

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

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

angular.forEach

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

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

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


2
Array#forEach可以在不使用库的情况下工作。 - Nina Scholz
1个回答

11

AngularJS的forEach函数在实现时,如果ES5 forEach可用,则使用它,但是这并不是最快的。然而,自从此次提交之后,AngularJS版本正在使用最快的for循环。

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

如果您查看此处的比较,您会发现ES5 forEach的实现速度不是最快的。在此比较中,AngularJS版本使用ES5 forEach(如果可用)。这得以通过此次提交而改变。现在它总是使用最快的for循环方式。


网站正在维护中,你能给我其他链接吗? - rittam
http://web.archive.org/web/20150909085855/http://jsperf.com/angular-foreach-vs-native-for-loop/141 - bfmags
2
@Snixtor 更新了!以前它会使用 ES5 forEach(如果可用),但现在它总是使用最快的 for 循环。谢谢! - bfmags
2
@rittam 社区(我和bfmags)共同努力,为您的问题制定了一个高质量的答案。它已经被投票赞同了几次,这意味着其他人认为它是一个有用的答案。您应该考虑将其标记为“答案”,或者说明为什么您认为它不能回答您的问题。 - Snixtor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接