首页 > 解决方案 > 如何将此函数转换为纯函数?

问题描述

我有以下功能。

const array = [1, 2, 3];

// Impure function

function addElementToArray(element) {
  array.push(element);
}

这是一个不纯的函数,因为它会改变全局数组。所以,我认为将整个数组作为函数参数将使函数变得纯粹。

function addElement(array, element) {
  array.push(element);
}

但是,我发现它也有副作用。

那么,使它成为纯函数的最佳方法是什么?

标签: javascriptfunctionecmascript-6functional-programming

解决方案


在函数体内,您可以复制输入数组并将元素附加到该新数组的末尾。您可以使用 es6 扩展运算符轻松做到这一点

function addElementIntoArray(a, element) {
  // returning a brand new array
  return [...a, element];
}

这样,它就不会改变全局数组,并且该函数将是一个纯函数。


推荐阅读