2017-08-08 39 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中不是一個常見的成語。由於類型強制,你很少需要這個。話雖如此,我不認爲它的壞習慣。