元素的总和,代码之间的差异
Sum of elements, differences between code
我有两段代码,都在计算数组元素的总和:
var sum = array.reduce(function(previousValue, currentValue) {
return previousValue + currentValue;
}, 0);
或
var sum = 0;
array.forEach(function(e) {
sum += e;
});
除了不同的实现之外,它们之间有什么区别吗?什么时候用哪个更好?
除了个人风格偏好之外,实际表现也可能存在差异。然而,这两人的表现似乎相似。
如果您经常(或对于大型阵列)执行此操作,请考虑使用第三种方法:
var sum = 0;
for (l = array.length; l--; ) { sum += array[l]; }
这会快得多。检查此性能测试的实际结果。
注意:如果缓存数组长度,您将获得一定的速度。因此,与其这样做:
for (var i = 0; i < array.length; i++) {...}
这样做:
var l = array.length;
for (; l--; ) { ... }
或者这个:
for (l = array.length; l--;) { ... }
第一个比第二个稍重。最快的方法是避免为每个步骤调用函数,并使用类似for
的循环。
var sum = 0;
for(var i=0, len=array.length; i<len; i++){
sum += array[i];
}
由于使用这两个函数都涉及到为每个元素执行回调函数,这将导致函数调用开销(因此两者都不有效),因此使用循环将提供更好的性能。
相关文章:
- 使用解析为javascript源的.php,如何使用条件语句将javascript代码封装在php括号之间
- 我如何知道js文件之间的javascript应用程序代码流
- 如何在城市和州代码之间用逗号将城市和州从短划线格式化为空格.(javascript)
- 在 JavaScript 中单击函数时两个日期类型输入之间的差异的代码
- 行之间有空格会影响 JavaScript 代码的性能吗?
- 如何使用angularJS在多个项目之间共享代码
- 创建在Javascript和PHP之间使用的唯一代码的最简单方法
- 在D3插件sankey.js和html代码之间定义源代码
- Node.js&两个请求之间的Express/Can上下文切换可以是同步代码
- 插件和现有jquery代码之间的冲突
- AngularJS控制器之间共享代码/方法/功能
- eval和setTimeout之间的差异执行字符串代码
- JavaScript-What'匿名函数和普通代码之间的区别是什么
- 两个代码之间的区别是什么(javascript的循环)
- 如何在两个大括号之间找到代码,尊重嵌套
- 代码在 Meteor 和 AngularJS 之间的可转移性如何
- 如何在标记之间获取代码
- 以下 2 段代码之间是否有实际区别
- 如何查看“”之间的代码
- 异步.js中第 169 行和第 171 行之间的代码块是什么意思