Функция compose
в Redux по большей части очень проста. и я понимаю, как его использовать.
export default function compose(...funcs) {
if (funcs.length === 0) {
return arg => arg
}
if (funcs.length === 1) {
return funcs[0]
}
return funcs.reduce((a, b) => (...args) => a(b(...args)))
}
Однако эта часть последнего бита кажется мне действительно неясной:
funcs.reduce((a, b) => (...args) => a(b(...args)))
Что такое ...args
часть? Я понимаю, что это остальные параметры, но что они оценивают? Откуда это?
...
не является оператором. Вы можете прочитать об остаточных параметрах и < href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_operator" rel="nofollow noreferrer">распространение вызовов на MDN. что он оценивает Они оба являются синтаксическими конструкциями с разными значениями. Первый означает, что все аргументы собраны в массив, доступный черезargs
. Второй означает передачу всех записей (итерации, на которую ссылается)args
в качестве аргументовb
. - person Felix Kling   schedule 16.04.2017