我目前正在进行我的React项目,研究如何将不纯函数转换为纯函数,以减少副作用、更整洁、更易于理解的代码。
我相信/希望在可能的情况下转换为纯函数可以实现这一点。
我的问题是,在函数中使用Object.keys((会被视为杂质吗?
Object.keys((
我的想法是,尽管Object.keys()
是一个不在getObjectKeys
范围内的函数,但它在vanillaJS中是全局的,因此它不会被视为杂质,也不需要添加到函数参数中,以通过使用Dependency Injection
使函数纯净。所以当问getObjectKeys
是否是纯函数时:
- 对于相同的输入,它是否输出相同的->是的
- 修改任何外部变量或对象属性->否
- 有什么副作用吗;否
您会认为getObjectKeys是一个纯函数吗?
function getObjectKeys(obj) {
return Object.keys(obj)
}
它(几乎(是纯的"几乎";因为你假设输入将是一个对象,我认为你可以通过输入错误来使它失败。
然而,引入是一件非常重要的事情
function getObjectKeys(obj) {
return Object.keys(obj)
}
在您的真实代码库中。它并没有使任何东西变得更好、可读性更强、可维护性更强。这不是函数式编程的全部内容。