如何在JavaScript中实现函数multiply(2)(3)(5)

如何在JavaScript中实现函数multiply(2)(3)(5),javascript,Javascript,您能否帮助在JavaScript中递归实现一个函数multiply(2)(3)(5) 调用它的一些方法是 乘以(5)(4)应得出结果20 乘以(5)(3)(2)得出的结果应为30 乘以(4)(2)(2)(4)应该得到结果64 等等..看起来不可能实现您描述的功能。在第一次/内部调用之后,它应该返回函数,但在最后一次调用中,它应该返回数字(结果)-但是JS中的函数不知道它将被调用多少次,以及最后一次是哪一次(特别是如果函数不使用全局状态) 链中乘(5)(3)(2) 通常不能在JavaScrip

您能否帮助在JavaScript中递归实现一个函数
multiply(2)(3)(5)

调用它的一些方法是

  • 乘以(5)(4)
    应得出结果20

  • 乘以(5)(3)(2)
    得出的结果应为30

  • 乘以(4)(2)(2)(4)
    应该得到结果64


等等..

看起来不可能实现您描述的功能。在第一次/内部调用之后,它应该返回函数,但在最后一次调用中,它应该返回数字(结果)-但是JS中的函数不知道它将被调用多少次,以及最后一次是哪一次(特别是如果函数不使用全局状态)

链中
乘(5)(3)(2)


通常不能在JavaScript中执行此操作。为了做到这一点,函数必须知道它的返回值是否将被调用,但它无法知道。话虽如此,使用JavaScript的类型强制将函数转换为数字(结果)是一种“黑客”行为。“不管怎样,这都是以前问过的,”费利克斯克林同意了。虽然,您可能可以在结果上使用
valueOf()
,因此,虽然您没有得到一个数字,但至少可以在操作
2*乘法(3)(4)
中使用它。例如。@VLAZ:是的,我编辑了我的注释,以添加有关该操作的提示。这是一个很好的折衷方案。虽然您说完全按照OP要求执行的代码是不可能的,但有几种合理的解决方法可以实现相同的功能。这可能是一个评论,而不是回答。谢谢你的澄清
( ( multiply(5) ) (3) )(2)
              |     |    |> should return number
              |     |  
              |     > should return function
              |
              |> should return function