我应该有一个仅将参数传递给另一个函数的包装函数,还是直接分配另一个函数?

时间:2019-02-27 06:09:41

标签: javascript functional-programming

编辑:如果该问题的答案仅是样式或喜好问题,那么就可以了,我只选一个。 不过,我真正追求的是是是否有人可以指出第二种方式将是错误选择的充分理由。他们俩都工作。

如果我对一个带有一些参数的函数的引用,并返回调用具有相同给定参数的另一个函数的结果,那么可以直接将第二个函数分配给该引用,而不用这个 多余的“通过”正在进行吗?

例如,代替

const fn1 = x => fn2(x)    // (1) pass-through call

我会

const fn1 = fn2    // (2) assigning

我为什么不应该这样做?

我想到的一个可能原因是我无法控制将哪些参数传递给fn2。例如说fn2接受两个参数,就像这样

const fn2 = (x, y) => // do something, using y if it's given to produce a different result

其中第二个参数y是可选的。

在(1)中,当有人使用第二个参数调用fn1时,它将被忽略,而仅使用第一个参数x调用fn2。也就是说,我可以控制并强制仅将单个参数传递给fn2。

另一方面,在(2)中,当有人调用fn1时,他们实际上是直接调用fn2,因此可以控制是否将一个或两个参数传递给fn2。

(2)被认为不好吗?也许甚至更喜欢?

如果有人想知道为什么fn1仅在传递到fn2时为什么根本不存在,那是因为我喜欢这样做以提高代码的清晰度。例如,而不是调用

createFilledCircle(5)

我可以打电话

createPositionMarker(5)

只是简单地调用createFilledCircle,但可以更清楚地了解发生了什么。也就是说,我会选择其中一种,而我想知道第二种方法是否正确,首选还是不好。

const createPositionMarker = radius => createFilledCircle(radius) // (1) pass-through call

const createPositionMarker = createFilledCircle // (2) assigning

感谢您的投入! :)

0 个答案:

没有答案