【发布时间】:2020-12-27 16:23:22
【问题描述】:
在 Javascript 和许多其他编程语言中,我们可以将函数作为参数传递给其他函数。这是函数式编程中的常见做法。
我们知道需要一个包装器来在那里放置一个断点、查看它在堆栈跟踪中的位置、更好地控制参数或在调用之前/之后添加逻辑。
是否还有其他客观原因不将展开的函数作为参数传递?
myFunction1(x => myFunction2(x)) // wrapped
myFunction1(myFunction2) // unwrapped
【问题讨论】:
-
当然,当您想放置断点时,请继续使用包装器...如果您需要用于
removeEventListener的函数引用,那么您必须分配您的包装器函数到变量或命名它。不确定您的问题是什么。 -
请注意
e => myFunction(e)等同于myFunction。但是,e => myFunction([]) (e)不等同于myFunction([]),前提是您对数组进行了变异。 -
@trincot 我想继续使用包装器是明智的。不相信(还?)直接传递函数的想法。
-
真的取决于你的需要。如果您不需要做任何其他事情(例如调用函数的 before 断点,或者传递一个额外的参数,...)并且您不需要特定的 this 绑定,那么传递在我看来,函数引用看起来更好,并且您将少一个包装级别。但同样,这种选择实际上是由您的需求驱动的。
标签: javascript functional-programming ramda.js