这个问题已经在标题中了,但以下是更详细的解释。
很久以前,我学会了一些不错的JavaScript函数,例如reduce、filter、map等等。我真的很喜欢它们,并开始频繁使用它们(它们看起来很时髦,我认为由于它们是本地函数,所以它们应该比我的旧for循环更快)。
最近我需要执行一些复杂的js计算,所以我决定检查它们的速度有多快,但令我惊讶的是它们不是更快,相反,它们慢得多得多(从3倍到25倍慢)
此外,我没有针对每个函数进行检查,但这里是我的jsperf测试:
那么为什么本地函数比旧循环慢得多,如果它们没有做任何更好的事情,那么创建它们的目的是什么。
我认为速度损失是由于函数在其中被调用,但这并不能证明这种损失。而且我看不出为什么使用这些函数编写的代码更易读,更不用说它们并不受到每个浏览器的支持。
.filter
- 噢,它比循环慢了10倍(在FF中被忽略了):http://jsperf.com/filter-and-loop/4 - zerkms