在纯函数中使用Object.keys()这样的全局函数会被合理地视为杂质吗



我目前正在进行我的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)
}

在您的真实代码库中。它并没有使任何东西变得更好、可读性更强、可维护性更强。这不是函数式编程的全部内容。

相关内容

  • 没有找到相关文章

最新更新