Может кто-нибудь объяснить, какую функцию totalSelector
возвращает?
Почти наверняка не то, что автор хотел вернуть. : -)
Она возвращает функцию, которая при вызове с двумя аргументами возвращает объект со свойством total
, которое является суммой двух переданных аргументов. Все в totalSelector
до the * Строка 1012 * совершенно бессмысленна и игнорируется, потому что у автора есть shadowed константы subtotal
и tax
с параметрами в функции стрелки, которую она возвращает:
export const totalSelector = state => {
const subtotal = subtotalSelector(state) // <=== These
const tax = taxSelector(state) // <=== constants
// vvvvvvvvvvvvv------------ are shadowed by these parameter declarations
return (subtotal, tax) => ({ total: subtotal + tax })
// ^^^^^^^^^^^^^^ -- so this uses the parameters
}
То есть subtotal
и tax
в теле функции-стрелки - это параметры, а не константы.
Автор, вероятно, хотел сделать это:
export const totalSelector = state => {
const subtotal = subtotalSelector(state)
const tax = taxSelector(state)
return () => ({ total: subtotal() + tax() })
// ^^ ^^ ^^
}
... хотя трудно быть уверенным. Он принимает объект состояния и возвращает функцию, которая при вызове выберет промежуточную сумму и налог с этого вызова и вернет итог. Обратите внимание, что он не принимает никаких параметров, и вызывает функции, созданные с помощью subtotalSelector(state)
и taxSelector(state)
.
subtotalSelector
и taxSelector
имеют ту же проблему.