为何函数体结构相似的partialLeft与partialRight函数返回值存在差异?
差异原因说明
两个函数返回结果不同的核心原因是参数拼接顺序完全相反,最终传入原函数的参数位置不同,而原函数的运算逻辑和参数位置强绑定,因此得到不同结果:
partialLeft拼接参数的规则是:预传入的outerArgs在前,后续调用时传入的innerArgs在后
对应示例partialLeft(f, 2)(3,4)执行时,最终拼接得到的参数列表为[2, 3, 4],代入原函数计算:2 * (3 - 4) = -2partialRight拼接参数的规则是:后续调用时传入的innerArgs在前,预传入的outerArgs在后
对应示例partialRight(f, 2)(3,4)执行时,最终拼接得到的参数列表为[3, 4, 2],代入原函数计算:3 * (4 - 2) = 6
两个函数的整体逻辑确实高度相似:都是先存储部分预传入的参数,调用时再把两部分参数拼接后执行原函数,只是拼接顺序的差异实现了「左绑定参数」和「右绑定参数」两种不同的偏函数用法。
内容的提问来源于stack exchange,提问作者ariake
相关产品推荐
相关产品推荐

