【发布时间】:2021-03-04 13:39:07
【问题描述】:
是否有一些函数式编程规则表明这两件事是相同的?
也就是说,我在 React 程序中将函数作为属性传递,并且我使用的是第二个版本,并传入了第一个参数。出于好奇,我只传递函数,我的应用程序仍然可以工作但我很困惑为什么。
(要特别清楚,onFavoriteToggle 是一个函数)
<SpeakerFavorite
favorite={favorite}
onFavoriteToggle={onFavoriteToggle}
/>
相比
<SpeakerFavorite
favorite={favorite}
onFavoriteToggle={(fun) => {onFavoriteToggle(fun)}}
/>
【问题讨论】:
-
你说的“函数式编程规则”是什么意思?
-
@VLAZ,我的示例是否属于身份功能类别?不带参数我就知道了,不知道带参数是不是一样。
-
不,这不是身份。一个恒等函数有不同的语义——它是
x => x。但是,在参数相等的情况下,x => fn(x)可以简化为fn。例如,["1", "2", "3"].map(x => Number(x))与["1", "2", "3"].map(Number)相同。但是,["1", "2", "3"].map(x => parseInt(x))不与 ["1", "2", "3"].map(parseInt)` 相同,因为函数的数量不同以及它的执行方式不同叫做。见Why does parseInt yield NaN with Array#map?
标签: javascript reactjs