这种for循环迭代的替代方法如何工作? (JavaScript)的

时间:2017-08-08 16:39:18

标签: javascript iteration

有人可以向我解释这段代码是如何工作的,或者链接到某个解释这个的地方? (特别是部分:+ acc + + curr;)

有问题的代码:

let args = process.argv;
let sum = args.reduce(function(acc, curr) {
  return +acc + +curr;
});
console.log(sum);

使用for循环执行相同操作的原始解决方案:

let result = 0;
for (i = 0; i < process.argv.length; i++) {
  result += Number(process.argv[i])
}
console.log(result);

顶级花式代码是否是知道/推荐练习的好方法? 感谢。

1 个答案:

答案 0 :(得分:1)

let args = process.argv&lt; - 得到了论点 let sum = args.reduce(function(acc, curr) {&lt; - 使用数组reduce,将其减少为单个值 return +acc + +curr;&lt; - 这使用一元运算符将两者都转换为数字表示然后添加它们

console.log(sum)&lt; - 调出array.reduce返回的值,然后将其赋值给sum。

减少文档:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce

一元操作员文档:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators#Unary_plus

就最佳做法而言,我不相信这是极其可读的。它不是JS中常见的习语。由于类型强制,你很少需要这个。话虽如此,我不认为这是不好的做法。