gpt4 book ai didi

javascript - 副作用的函数参数

转载 作者:行者123 更新时间:2023-11-29 10:06:20 25 4
gpt4 key购买 nike

我可以使用参数来保持函数的纯净吗?

例子:

const activateAUser = (user, log) => {
const newUser = {...user, active: true};

log("User activated");

return newUser;
}

activateAUser({active: false, name: 'John'}, console.log);

在这种情况下,我们可以说 activateAnUser 函数是纯函数吗?

最佳答案

与其争论“纯度”的确切定义是什么,我将提供另一种观点:即您的示例是次优的。为什么将用户激活与日志记录混为一谈?您试图组合两个不相关的事物,但您倒着完成了组合。

var log = f => (...args) => {
var result = f(...args);
console.log(result);
return result;
};

var activateUser = log(user => ({...user, active: true}));

现在 activateUser(或者至少是参数函数)绝对是纯的,log 绝对不是,我们已经回避了一个没有引导的参数。每当您发现自己(在内部或外部)争论这些事情时,就该重新考虑您的设计了。

关于javascript - 副作用的函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42557453/

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