什么函数返回另一个参数也声明为常量的函数呢?

What function returning another function with parameters declared also as constants exactly do?

我完全迷路了。以下是 article 考虑重新选择库的简短代码:

const shopItemsSelector = state => state.shop.items
const taxPercentSelector = state => state.shop.taxPercent

const subtotalSelector = state => {
  const items = shopItems(state)
  return items => items.reduce((acc, item) => acc + item.value, 0)
}

const taxSelector = state => {
  const subtotal = subtotalSelector(state)
  const taxPercent = taxPercentSelector(state)
  return (subtotal, taxPercent) => subtotal * (taxPercent / 100)
}

export const totalSelector = state => {
  const subtotal = subtotalSelector(state)
  const tax = taxSelector(state)
  return (subtotal, tax) => ({ total: subtotal + tax })
}

谁能解释一下 totalSelector returns 是什么函数?

我看到了 returns 另一个参数为 subtotaltax 的函数,但为什么有同名常量声明的以及它们如何对应返回函数的参数?

Can someone explain what function totalSelector returns?

几乎可以肯定这不是作者要 return 表达的意思。 :-)

它是什么 returns 是一个函数,当用两个参数调用时,returns 是一个带有 total 属性 的对象,它是两个参数的总和传入的参数。totalSelector before return 行中的所有内容完全没有意义并被忽略,因为作者已经 shadowed箭头函数中带有参数的 subtotaltax 常量是 returning:

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
}

所以箭头函数体中的subtotaltax是参数,不是常量。

作者大概是这个意思:

export const totalSelector = state => {
  const subtotal = subtotalSelector(state)
  const tax = taxSelector(state)
  return () => ({ total: subtotal() + tax() })
  //     ^^                      ^^      ^^
}

...虽然很难确定。它接受一个状态对象和 returns 一个函数,当被调用时,将 select 小计和征税 从那个调用开始 和 return 总计.请注意,它不接受任何参数,并且 调用 它通过 subtotalSelector(state)taxSelector(state) 创建的函数。

subtotalSelectortaxSelector有同样的问题。

totalSelector() returns 需要两个参数的函数 subtotaltax.

这个returned functionreturns一个object with the property total是通过subtotal + tax

计算出来的

声明的常量与返回的函数无关。