1

我目前正在查看我的 React 项目,寻找可以将不纯函数转换为纯函数的地方,以减少副作用、更整洁和更易于理解的代码。

我相信/希望在可能的情况下转换为纯函数将实现这一目标。

我的问题是,在函数中使用 Object.keys() 会被视为杂质吗?

对象.keys()

我的想法是,虽然Object.keys()它是一个不在范围内的函数getObjectKeys,但它在 vanilla JS 中是全局的,因此它不会被视为杂质或需要添加到函数参数中以使函数纯净通过使用Dependency Injection. 因此,当询问是否getObjectKeys是纯函数时:

  • 对于相同的输入,它是否输出相同 -> 是的。
  • 修改任何外部变量或对象属性 -> 否
  • 有没有副作用 -> 没有

你会认为 getObjectKeys 是一个纯函数吗?

function getObjectKeys(obj) {
    return Object.keys(obj)
}
4

1 回答 1

1

它(几乎)是纯净的。“几乎”是因为您假设输入将是一个对象,我认为您可以通过输入错误的输入使其失败。

但是,确实很重要,介绍绝对是胡说八道

function getObjectKeys(obj) {
    return Object.keys(obj)
}

在您的真实代码库中。它并没有变得更好,也没有可读性,也没有可维护性。这不是函数式编程的全部内容。

于 2020-12-07T08:28:53.247 回答