2017-08-08 61 views
0

有人可以向我解释这段代码是如何工作的,或者是解释这个的某个地方的链接? (特别是部分:+ ACC + + CURR)for循环迭代的这种替代方法是如何工作的? (Javascript)

代码的问题:

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

与循环,做同样的事情原液:

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

就是看中代码顶部一个很好的方法知道/推荐的做法? 谢谢。

+1

[javascript:加变量前的符号](https://stackoverflow.com/questions/6682997/javascript-plus-symbol-before-variable) –

+0

减少,映射和过滤器都是迭代的方式,而不用做循环,他们非常强大但很难理解。你尝试使用Google搜索吗?这不是最好的格式化问题,你不是在问什么让你感到困惑,只是问什么是减少。这可以用Google搜索。 – jdmdevdotnet

+0

不,不要忽略起始值。更好:'const sum = process.argv.reduce((acc,arg)=> acc + Number(arg),0);' – Bergi

回答

1

let args = process.argv < - 即获取参数 let sum = args.reduce(function(acc, curr) { < - 使用阵列减少,其减少为单个值 return +acc + +curr; < - 这使用一元运算符既转换成数字表示然后将它们相加

console.log(sum) < - 调出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中不是一个常见的成语。由于类型强制,你很少需要这个。话虽如此,我不认为它的坏习惯。