gpt4 book ai didi

javascript - 接收函数作为参数的函数是否仍然可以视为纯函数?

转载 作者:行者123 更新时间:2023-12-05 00:29:27 26 4
gpt4 key购买 nike

addVat 是纯函数吗?

function addVat(country, getVat, amount)
{
if(amount > 0) {
return amount + getVat(country)*amount
}

return amount
}
有一个函数作为参数 - getVat - 使 addVat 自动不纯?
根据 getVat 的实现,我们可能会引入任何副作用...... getVat 可能会返回一个随机值,从而使 addVat 的结果不可预测。
const getVat = ()=> Math.random()
addVat('UK',getVat, 20)
产生外部副作用的案例...
const getVat = ()=> {
updateDbWithVatUsed(0.2)
return 0.2
}
addVat('UK',getVat, 20)
另一方面,单元测试是可行的,因为副作用或数据可变性超出了纯函数的范围,我们可以将其 stub 以使测试完全可预测。
const getUKVat = ()=> 0.2
assert.equal(addVat('UK',getUkVat, 20), 24)

我的疑虑来自......纯度是否定义为函数的作用,不包括作为参数传递的外部调用发生的任何事情?
否则,由于高阶函数是函数式编程的主题......难道不考虑调用考虑就不可能将函数本身分类为纯函数。

最佳答案

我认为这取决于 getVat() .如果 getVat()是纯净的addVat()也很纯:)

关于javascript - 接收函数作为参数的函数是否仍然可以视为纯函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69699276/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com